2

アプリでは、gpsを使用してユーザーの場所を探しています。非同期の事前実行メソッドでは、トーストを表示しています。トーストを表示している間、戻るボタンを無効にする必要があります。

場所が見つかった後、実行後の戻るボタンを有効にします!

使用した戻るボタンを無効にしますが、これは機能しません

 OnKeyListener mainScreenKeyListener = new OnKeyListener() {
                @Override
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                    boolean disableEvent = false;
                    if (event.getKeyCode()==KeyEvent.KEYCODE_BACK) {
                        disableEvent = true;
                    }

                    return disableEvent;
                }
            };
4

4 に答える 4

4

disableEventグローバル変数は次のように宣言できます

final boolean disableEvent;

あなたのPreexecuteメソッドはそれをfalseによって設定することができます

disableEvent = false;

あなたのPostexecuteメソッドはそれをtrueによって設定することができます

disableEvent = true;

以下に示すように、onBackPressedをオーバーライドできます。

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        if (disableEvent)
        {
            // do nothing
        }
        else
        {
            // do something
        }
    }
于 2012-11-19T12:43:10.070 に答える
2

どうぞ

1つの静的変数を割り当て、onPreExecuteでその値を「NO」に設定します。onPostExecuteで、その値を「YES」に割り当てます。

そして、onBackPressedに次のコードを記述します。

 @Override
    public void onBackPressed() {

       if (decision.equals("NO")) {  //Here no means dont allow user to go back

       } else {
           super.onBackPressed(); // Process Back key  default behavior. 
       }

   }
于 2012-11-19T12:47:38.857 に答える
1

こんにちは無効にするには、上記の関数を呼び出すだけです

public void onBackPressed()
        {
         }

有効にするため

 public void onBackPressed()
    {
        super.onBackPressed();
        super.finish(); 
        //Intent
    }
 if you want both set flag inside the function
于 2012-11-19T12:44:28.777 に答える
0

アクティビティのonBackPressメソッドをオーバーライドします

Class A
{
    public static boolean isToastShown=false;



    @Override
        public void onBackPressed() {
               if(isToastShown==true)
                 return false;
               else
                 super.onBackPressed();

             }

}

@Override
    protected void onPreExecute() {
        super.onPreExecute();
           //Show your toast here
           A.isToastShown=true;


new CountDownTimer(2000,2000) {

            @Override
            public void onTick(long millisUntilFinished) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onFinish() {
                A.isToastShown=false;

            }
        }.start();


      }
于 2012-11-19T12:44:22.737 に答える