2012-11-19 157 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. 
     } 

    }