2

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

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

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

 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

干得好

分配一个静态变量。在 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 回答