我有一個簡單的佈局,使用3個按鈕。我有第一個按鈕的聽衆。它會在點擊時按預期調用。聽衆檢查幾件事情,可能會下載幾個文件,然後開始另一個活動。onClick監聽器代碼不顯示Toasts
在文件下載過程中,我想通知用戶下載正在進行。我嘗試了通常的嫌疑犯,但我看到使用ProgressBar會有很多代碼。所以我嘗試了一些更小的東西:我用Toast顯示一條消息,然後在下載期間禁用3個按鈕。這是代碼:
int version_pre = getCurrentVersion();
//Check files on remote server
String URL = Data._URL + "/" + Data.OWNER + "/version";
if(!this.downloadFile(URL, "version")) {
Toast.makeText(this, "Download der Dateien fehlgeschlagen. Fahre mit lokaler Version fort.", Toast.LENGTH_LONG).show();
}
int version_post = getCurrentVersion();
if(version_pre != version_post) { //Neu Dateien besorgen
Button b1 = (Button)findViewById(R.id.btn_Prospekt);
b1.setEnabled(false);
b1 = (Button)findViewById(R.id.btn_Einheitenumrechner);
b1.setEnabled(false);
b1 = (Button)findViewById(R.id.btn_Sonstiges);
b1.setEnabled(false);
Toast.makeText(this, "Aktualisierung der Dateien wird gestartet.", Toast.LENGTH_LONG).show();
if(!fetchAllFiles()) {
Toast.makeText(this, "Download der Dateien fehlgeschlagen. Fahre mit lokaler Version fort.", Toast.LENGTH_LONG).show();
}
b1 = (Button)findViewById(R.id.btn_Prospekt);
b1.setEnabled(true);
b1 = (Button)findViewById(R.id.btn_Einheitenumrechner);
b1.setEnabled(true);
b1 = (Button)findViewById(R.id.btn_Sonstiges);
b1.setEnabled(true);
}
return "";
問題是這樣的:即使在調試時,我看不到任何的GUI變更機構實際上做任何事情。禁用這些按鈕應該將它們變灰。它沒有。調用Toast.maketext()。show()應該顯示一條消息。它沒有。
我懷疑這可能是預期的行爲,因爲它涉及多種機制。是否有限制,我可以調用一個動作偵聽器來改變UI?在Listener中更改UI時,是否需要調用refresh()方法?
謝謝。
所以你說上述所有的代碼都在一個按鈕onClick監聽器?關於上述代碼駐留的位置(在哪個成員和哪個線程中?),我有點不清楚。 – Idistic
在啓動目標活動之前,偵聽器會調用此代碼。 – 0xCAFEBABE