2011-09-21 56 views
0

在我的應用程序中,我有一個威脅,從服務器加載一些圖像。 下載完圖像後,它們將顯示在對話框中。 這是工作,但如果用戶通過後退按鈕離開屏幕,我的應用程序與此logcat的輸出崩潰:對話框崩潰我的應用程序

09-21 09:54:14.553: ERROR/AndroidRuntime(486): android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 

應用程序正在運行,直到老年活動調用下面的代碼(創建一個自定義對話框)。

我已經知道它崩潰了: 我在下載圖像後調用Handler。在處理程序中,我執行以下操作:

 final Dialog dialog = new Dialog(Product.this); 
    dialog.setContentView(R.layout.imageview_inflator); 
    dialog.setTitle("Choose a Picture"); 
    dialog.setCancelable(true); 

    // set up image view 
    final ImageView img = (ImageView) dialog.findViewById(R.id.imageView); 
    img.setImageBitmap(ImageLoader.cache.get(pic_url[pictureCounter])); 


    dialog.show(); 

如何避免碰撞。我認爲我應該以某種方式避免顯示對話框,如果活動不是運行的。

+0

該代碼存在錯誤。你忘了在'Choose a Picture'後面加上'''' – Behrang

+0

那是真的,但是這只是一個錯字,我已經編輯了我的帖子 – tobias

+0

按下後退按鈕,你在做什麼 –

回答

1

當您離開活動時,您的錯誤bcoz正在運行,您的線程仍在運行,並且它正在調用您的處理程序以顯示對話框,並且該對話框沒有可以顯示的活動。

您可以通過將對話代碼放在try-catch內避免它,因爲它會阻止您的應用程序崩潰。

+0

我正在嘗試它! – tobias