web-dev-qa-db-ja.com

Androidの戻るボタンを無効にする

アプリケーションをログアウトしている間にAndroidで戻るボタンを無効にするにはどうすればいいですか?

307
Grace

OnBackPressedメソッドをオーバーライドし、デバイスの戻るボタンを操作しようとしている場合は何もしません。

@Override
public void onBackPressed() {
   if (!shouldAllowBack()) {
       doSomething();
   } else {
       super.onBackPressed();
   }
}
626
Gopinath

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);    
}

そしてより高いAPIレベル2.0以上を探しているならこれはとてもうまくいくでしょう

@Override
public void onBackPressed() {
    // Do Here what ever you want do on back press;
}

戻るボタンが押されないようにするために、あなたのアクティビティにこのコードを書いてください。

159
Javanator

あなたはこの簡単な方法をすることができますsuper.onBackPressed()を呼ばないでください

注: - あなたがそれをする強い理由がある場合を除き、これをしないでください。

@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
28
Iman Marashi

単にonBackPressed()メソッドをオーバーライドするだけです。

@Override
public void onBackPressed() { }
21
Pankaj kumar

私はそれを使っています.............

 @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..............
}
13

アクティビティが終了する前にAndroidクライアントアプリケーションが何らかのサーバーからログアウトされていることを確認したい場合 - >自分のスレッドでサービスを使用してログアウトします(これはとにかくあなたがするべきことです)。

戻るボタンを無効にしても何も解決されません。たとえば、ユーザーが電話を受けたときにも同じ問題が発生します。電話がかかってきたとき、あなたの活動はネットワークから信頼できる答えが返ってくるまでに殺される可能性がほぼ同じです。

そのため、ネットワークからの応答をサービスに独自のスレッドで待機させ、成功しなかった場合はサービスを再試行させる必要があります。 Androidサービスは、回答が返ってくる前に殺される可能性がはるかに低いだけでなく、仕事を終える前に本当に殺された場合でも、AlarmManagerによって常に再試行される可能性があります。

9

OnBackPressed()メソッドをオーバーライドするだけで、onBackPressedメソッドなどのスーパークラスを呼び出す必要はありません。

@Override
public void onBackPressed()
{

}

または現在のアクティビティをonBackPressed()メソッドに渡します。

@Override
public void onBackPressed()
{
   startActivity(new Intent(this, myActivity.class));  
   finish();
}

必要なアクティビティ名をmyActivityに置き換えます。

フラグメントを使用している場合は、まず最初にcallParentMethod()メソッドを呼び出します。

public void callParentMethod(){
    context.onBackPressed(); // instead of context use getActivity or something related
}

それから空のメソッドを呼び出します

@Override
public void onBackPressed()
{

}
7
Zakaria Hossain

FragmentActivityを使用している場合それからこのようにする

まずあなたのFragmentの中でThisを呼び出します。

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
  ...
}
6
hash

このコードを使用するだけです。バックプレスを無効にする場合は、super.OnBackPressed()を使用しないでください。

@Override
public void onBackPressed() {

}
5
Seda T.

ログアウト中にアプリを無効にしたい場合は、キャンセルできないダイアログをポップアップ表示できます。

4
Ted Hopp

アクティビティのonBackPressed()メソッドをオーバーライドしてスーパークラスへの呼び出しを削除できます。

@Override
public void onBackPressed() {
  //remove call to the super class
  //super.onBackPressed();
}
4
Aman Agarwal

上記の答えからこれら2つの方法を別に形成しなさい。

onBackPressed() (APIレベル5、Android 2.0)

onKeyDown() (APIレベル1、Android 1.0)

このようにdispatchKeyEvent()(API Level 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);
}
3
Kris Roofe

戻るボタンのメソッドをオーバーライドするだけです。必要に応じてメソッドを空のままにして、戻るボタンを押しても何も起こらないようにすることができます。以下のコードを見てください。

@Override
public void onBackPressed() 
{
   // Your Code Here. Leave empty if you want nothing to happen on back press.
}
3
Hammad Khan

私にとってonBackPressed()をオーバーライドするだけではうまくいきませんでしたが、どのアクティビティを開始するべきかを明示的に示すことでうまくいきました。

@Override
public void onBackPressed(){
  Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
  startActivity(intent);
}
2
cheeroke

これを試して:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
 if (keyCode == KeyEvent.KEYCODE_BACK) {

   return true;
 }
   return super.onKeyDown(keyCode, event);    
}
1
mohamad sheikhi

super.onBackPressed()からpublic void onBackPressed()を削除してください。 Android 9でテスト済み

0
Golil

Androidの戻るボタンを無効にする

@Override
public void onBackPressed() {
    return;
}
0
Mahesh Bokhani