Come disabilitare il pulsante Indietro in Android durante la disconnessione dell'applicazione?
Come disabilitare il pulsante Indietro in Android durante la disconnessione dell'applicazione?
Risposte:
Sostituisci il metodo onBackPressed e non fare nulla se intendevi gestire il pulsante Indietro sul dispositivo.
@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
Se stai cercando un livello API 2.0 superiore e superiore funzionerà alla grande
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
Se stai cercando un livello API Android fino a 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);
}
Scrivi il codice sopra nella tua attività per impedire la pressione del pulsante Indietro
Puoi farlo in modo semplice Non chiamare super.onBackPressed ()
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
Sostituisci semplicemente il metodo onBackPressed () .
@Override
public void onBackPressed() { }
Lo sto usando .............
@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..............
}
Se vuoi assicurarti che la tua applicazione client Android sia disconnessa da alcuni server prima che la tua Attività venga uccisa -> esci con un servizio sul suo thread (è comunque quello che dovresti fare).
Disabilitare il pulsante Indietro non risolverà nulla per te. Avrai comunque lo stesso problema quando l'utente riceve una telefonata, ad esempio. Quando si riceve una telefonata, la tua attività ha più possibilità di essere ucciso prima che ottenga una risposta affidabile dalla rete.
Ecco perché dovresti lasciare che un servizio attenda sul proprio thread la risposta dalla rete e quindi riprovare se non riesce. Il servizio Android non è solo molto meno probabile che venga ucciso prima di ricevere una risposta, ma se dovesse davvero essere ucciso prima di terminare il lavoro, può sempre essere rianimato da AlarmManager per riprovare.
Sovrascrivi il metodo onBackPressed () e non è necessario chiamare la super classe del metodo onBackPressed o altri.
@Override
public void onBackPressed()
{
}
Oppure passa la tua attività corrente al metodo onBackPressed ().
@Override
public void onBackPressed()
{
startActivity(new Intent(this, myActivity.class));
finish();
}
Sostituisci il nome dell'attività richiesta in myActivity.
se stai usando il frammento, prima di tutto chiama il metodo callParentMethod ()
public void callParentMethod(){
context.onBackPressed(); // instead of context use getActivity or something related
}
quindi chiama il metodo vuoto
@Override
public void onBackPressed()
{
}
se stai usando FragmentActivity
. allora fai così
prima chiamata Questo dentro di te Fragment
.
public void callParentMethod(){
getActivity().onBackPressed();
}
e poi chiama il onBackPressed
metodo a fianco della tua FragmentActivity
classe genitore .
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
È possibile ignorare il onBackPressed()
metodo nella propria attività e rimuovere la chiamata alla superclasse.
@Override
public void onBackPressed() {
//remove call to the super class
//super.onBackPressed();
}
Devi solo sostituire il metodo per il pulsante Indietro. Se lo desideri, puoi lasciare vuoto il metodo in modo che non accada nulla quando premi il pulsante Indietro. Si prega di dare un'occhiata al codice qui sotto:
@Override
public void onBackPressed()
{
// Your Code Here. Leave empty if you want nothing to happen on back press.
}
A parte questi due metodi dalla risposta sopra.
onBackPressed () (API Level 5, Android 2.0)
onKeyDown () (API Level 1, Android 1.0)
Puoi anche sostituire dispatchKeyEvent()
(API Level 1, Android 1.0) in questo modo,
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);
}
Disabilita buttton posteriore in Android
@Override
public void onBackPressed() {
return;
}
Prova questo:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}