3つのボタンを使用した簡単なレイアウトです。最初のボタンにリスナーがあります。それはクリックで期待通りに呼び出されます。リスナーはいくつかのことをチェックし、いくつかのファイルをダウンロードする可能性があり、次に別のアクティビティを開始します。onClickリスナーコードにトーストが表示されない
ファイルのダウンロード中に、ダウンロードが行われていることをユーザーに伝えたいと思います。私は通常の容疑者を試しましたが、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を変更するアクションリスナーで何が呼び出せるかに関する制限はありますか?リスナーでUIを変更するときにrefresh()メソッドを呼び出す必要がありますか?
ありがとうございました。
上記のコードはすべてボタンonClickリスナーにあると言っていますか?私は上記のコードがどこに存在するかについて少し不明です(メンバーとスレッドのなかで) – Idistic
このコードは、ターゲットアクティビティを開始する前にリスナーによって呼び出されます。 – 0xCAFEBABE