2012-07-18 57 views
1

我有一些標籤類型的活動,用戶可以從一個活動導航到另一個,點擊頂部的按鈕標籤。點擊任何選項卡時,會出現一個ProgressDialog,並顯示「Loading ...」視圖。我想管理它,因爲在加載過程中,如果用戶按下後退按鈕,它將返回到上一個活動。Android的ProgressDialog OnClickListener與後退按鈕問題

我嘗試過使用ProgressDialog的onClickListener實現這一點,但我有2個問題。

第一個問題出現在加載對話框中:如果用戶點擊屏幕上的任何位置,則會觸發進度對話框的onClickListener。我不希望發生這種情況;它只能從後退按鈕觸發。

第二個問題是當「加載...」出現時,我的onClickListener工作1或1.5秒,而它可以看到約2-3秒。如果我在1秒或1.5秒後按下後退按鈕。進度對話框監聽器不會執行任何操作並保持在同一活動上?

+0

剛剛使用progressdialog.setCanceledOnTouchOutside(假)第一issue..just的解決方案; – Ishant 2012-07-19 12:44:54

+0

很高興看到這一點。但是我認爲你的主要問題是你不想讓你的進度對話框在點擊返回按鈕時返回到前一個屏幕。不僅如此,我認爲你不需要太多。只是做pd.setCancellable(false); ..並從您的代碼中刪除所有其他東西。即使你的點擊監聽器也是如此。並嘗試。 – Ahmed 2012-07-19 15:57:10

+0

@BratRosm不,你錯了我的朋友..我只是對面,我想回到以前的屏幕只有後退按鈕,沒有別的.. – Ishant 2012-07-20 04:08:53

回答

0

覆蓋onBackPressed()方法並首先關閉對話框,然後讓super.onBackPressed()工作,這樣它將關閉對話框,您可以返回到正常屏幕。

其次,只需設置dialog.setCancellable(false);,即使用戶點擊屏幕上的任何位置,用戶也無法做到這一點。

例如,

@Override 
public void onBackPressed() { 
dialog.dismiss(); 
super.onBackPressed(); 
} 

void create ProgressDialog() { 
dialog = new ProgressDialog/Alerdialog.Builder(this); 
dialog.setTitle(tile); 
dialog.setMessage(message); 
dialog.setCancellable(false); 
dialog.show(); 
} 

所有好走!

+1

::既不OnBackPressed也沒有OnKeyDown作品,如果progressDialog可見...不是對我有用的技巧 – Ishant 2012-07-19 04:14:37

0

這是我如何解決我的問題:

public ProgressDialog pDialog; 
    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     if (pDialog != null) 
      if (pDialog.isShowing()) 
       return; 

     super.onBackPressed(); 
    }