アプリケーションをログアウトするときにAndroidの戻るボタンを無効にする方法は?
アプリケーションをログアウトするときにAndroidの戻るボタンを無効にする方法は?
回答:
onBackPressedメソッドをオーバーライドし、デバイスの戻るボタンを処理するつもりなら何もしません。
@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
より高いAPIレベル2.0以上を探している場合、これはうまくいきます
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
1.6までのAndroid APIレベルを探している場合。
@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);
}
上記のコードをアクティビティに記述して、戻るボタンが押されないようにします
あなたはこれを簡単に行うことができますsuper.onBackPressed()を呼び出さないでください
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
私はそれを使っています.............
@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..............
}
アクティビティが終了する前にAndroidクライアントアプリケーションがサーバーからログアウトされていることを確認したい場合->独自のスレッドでサービスを使用してログアウトします(とにかくそれを行う必要があります)。
戻るボタンを無効にしても何も解決されません。たとえば、ユーザーが電話を受けた場合でも、同じ問題が発生します。電話がかかってくると、あなたの活動は、ネットワークから信頼できる回答が得られるまでに殺される可能性があります。
そのため、サービスからネットワークからの応答を独自のスレッドで待機させ、成功しない場合は再試行させる必要があります。Androidサービスは、返答が返される前に強制終了される可能性がはるかに低いだけでなく、ジョブが完了する前に強制終了された場合、AlarmManagerによって常に再試行され、再試行できます。
onBackPressed()メソッドをオーバーライドするだけで、onBackPressedメソッドやその他のスーパークラスを呼び出す必要はありません。
@Override
public void onBackPressed()
{
}
または、現在のアクティビティをonBackPressed()メソッドに渡します。
@Override
public void onBackPressed()
{
startActivity(new Intent(this, myActivity.class));
finish();
}
requireアクティビティ名をmyActivityに置き換えます。
フラグメントを使用している場合、最初にcallParentMethod()メソッドを呼び出します
public void callParentMethod(){
context.onBackPressed(); // instead of context use getActivity or something related
}
次に、空のメソッドを呼び出します
@Override
public void onBackPressed()
{
}
あなたが使用している場合FragmentActivity
。その後、このようにします
最初にこれをあなたの内部に呼び出しますFragment
。
public void callParentMethod(){
getActivity().onBackPressed();
}
次にonBackPressed
、親FragmentActivity
クラスのサイドでメソッドを呼び出します。
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
上記の回答からこれら2つの方法を分けてください。
onBackPressed()(APIレベル5、Android 2.0)
onKeyDown()(APIレベル1、Android 1.0)
このようにdispatchKeyEvent()
(APIレベル1、Android 1.0)をオーバーライドすることもできます。
dispatchKeyEvent()
(APIレベル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);
}