Jak wyłączyć przycisk Wstecz w Androidzie podczas wylogowywania aplikacji?
Jak wyłączyć przycisk Wstecz w Androidzie podczas wylogowywania aplikacji?
Odpowiedzi:
Zastąp metodę onBackPressed i nie rób nic, jeśli chcesz obsłużyć przycisk Wstecz na urządzeniu.
@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
Jeśli szukasz wyższego poziomu interfejsu API 2.0 i wyższego, będzie to działać świetnie
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
Jeśli szukasz poziomu interfejsu API Androida do 1.6.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
return true;
}
return super.onKeyDown(keyCode, event);
}
Napisz powyższy kod w swoim działaniu, aby zapobiec naciśnięciu przycisku Wstecz
Możesz to zrobić w prosty sposób Nie wywołuj super.onBackPressed ()
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
Po prostu zastąp metodę onBackPressed () .
@Override
public void onBackPressed() { }
Używam tego.............
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK)
Toast.makeText(getApplicationContext(), "back press",
Toast.LENGTH_LONG).show();
return false;
// Disable back button..............
}
Jeśli chcesz się upewnić, że aplikacja kliencka na Androida jest wylogowana z jakiegoś serwera, zanim Twoja aktywność zostanie zabita -> wyloguj się z usługą w swoim wątku (to i tak powinieneś zrobić).
Wyłączenie przycisku Wstecz nie rozwiąże problemu. Nadal będziesz mieć ten sam problem, na przykład gdy użytkownik odbierze połączenie telefoniczne. Po odebraniu połączenia telefonicznego Twoja aktywność ma prawie taką samą szansę na zabicie, zanim otrzyma wiarygodną odpowiedź z sieci.
Dlatego należy pozwolić usłudze poczekać na swój wątek na odpowiedź z sieci, a następnie spróbować ponownie, jeśli się nie powiedzie. Usługa Androida nie tylko jest znacznie mniej podatna na śmierć, zanim otrzyma odpowiedź, ale jeśli naprawdę zostanie zabita przed zakończeniem pracy, zawsze może zostać przywrócona przez AlarmManager, aby spróbować ponownie.
Wystarczy zastąpić metodę onBackPressed () i nie trzeba wywoływać superklasy metody onBackPressed ani innych.
@Override
public void onBackPressed()
{
}
Lub przekaż swoją bieżącą aktywność do metody onBackPressed ().
@Override
public void onBackPressed()
{
startActivity(new Intent(this, myActivity.class));
finish();
}
Zastąp wymaganą nazwę działania myActivity.
jeśli używasz fragmentu, najpierw wywołaj metodę callParentMethod ()
public void callParentMethod(){
context.onBackPressed(); // instead of context use getActivity or something related
}
następnie wywołaj pustą metodę
@Override
public void onBackPressed()
{
}
jeśli używasz FragmentActivity
. to zrób tak
pierwsze połączenie To w twoim Fragment
.
public void callParentMethod(){
getActivity().onBackPressed();
}
a następnie wywołaj onBackPressed
metodę obok swojej FragmentActivity
klasy nadrzędnej .
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
Możesz zastąpić onBackPressed()
metodę w swojej działalności i usunąć połączenie z superklasą.
@Override
public void onBackPressed() {
//remove call to the super class
//super.onBackPressed();
}
Wystarczy zastąpić metodę przycisku Wstecz. Możesz pozostawić pustą metodę, jeśli chcesz, aby nic się nie stało po naciśnięciu przycisku Wstecz. Proszę spojrzeć na poniższy kod:
@Override
public void onBackPressed()
{
// Your Code Here. Leave empty if you want nothing to happen on back press.
}
Oprócz tych dwóch metod z powyższej odpowiedzi.
onBackPressed () (API Level 5, Android 2.0)
onKeyDown () (API Level 1, Android 1.0)
Możesz również zastąpić dispatchKeyEvent()
(API Level 1, Android 1.0) w ten sposób,
dispatchKeyEvent()
(API Level 1, Android 1.0)
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}
Wyłącz tylny przycisk w Androidzie
@Override
public void onBackPressed() {
return;
}
Spróbuj tego:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}