禁用和启用后退按钮

时间:2012-11-19 12:34:02

标签: android

在应用程序中我正在使用gps查找用户位置。在Async预执行方法中我显示了一个toast。我希望在我显示toast时应该禁用后退按钮

aftr找到位置我想在后执行中启用后退按钮!

禁用我使用的后退按钮。但这不起作用

 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 个答案:

答案 0 :(得分: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
        }
    }

答案 1 :(得分:2)

你去吧

分配一个静态变量,并在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. 
       }

   }

答案 2 :(得分:1)

您好禁用,只需调用上述功能

即可
public void onBackPressed()
        {
         }

启用

 public void onBackPressed()
    {
        super.onBackPressed();
        super.finish(); 
        //Intent
    }
 if you want both set flag inside the function

答案 3 :(得分: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();


      }