2012-11-19 160 views
2

在应用中即时寻找使用gps.In的异步预执行方法IM表示toast.I用户位置想的是,虽然我表明,烤面包的返回按钮应被禁用禁用和启用后退按钮

AFTR该位置被发现我想启用在后执行后退按钮!

禁用后退按钮我有used.But这是行不通的

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; 
       } 
      }; 
+0

不确定你愿意做什么。通过启用/禁用后退按钮,你的意思是什么?请描述应用程序的预期行为。 – Shlublu

+0

你的'onkey'函数被执行了吗?看看会发生什么,如果你使用onBackPressed:http://developer.android.com/reference/android/app/Activity.html#onBackPressed() – RvdK

回答

4

您可以通过

final boolean disableEvent; 

Preexecute方法声明全局变量disableEvent可以通过

将其设置为 false
disableEvent = false; 

您的Postexecute方法可以通过

disableEvent = true; 

将其设置为true您可以覆盖onBackPressed如下图所示:

@Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     if (disableEvent) 
     { 
      // do nothing 
     } 
     else 
     { 
      // do something 
     } 
    } 
+0

此方法thrwoing错误...语法错误“空白”,@expected –

+0

不要照原样复制它。只需重写onBackPressed方法并复制该方法的内容。 –

+0

它不工作,因为我的课程已经有onbackpressedmethod。所以当我在我的内部类中调用这个压抑的方法时,它没有考虑到这一点? –

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


     } 
1

喜为禁用您只需调用以上功能

public void onBackPressed() 
     { 
     } 

为使

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

因为我在使用内部类,所以我如何确保内部类的内联类被称为 –

2

在这里你去

分配一个静态variable.and设置其在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. 
     } 

    }