2011-07-21 15 views
0

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()メソッドを呼び出す必要がありますか?

ありがとうございました。

+1

上記のコードはすべてボタンonClickリスナーにあると言っていますか?私は上記のコードがどこに存在するかについて少し不明です(メンバーとスレッドのなかで) – Idistic

+0

このコードは、ターゲットアクティビティを開始する前にリスナーによって呼び出されます。 – 0xCAFEBABE

答えて

0

Toastを呼び出す行に.show()を追加する必要があります。そうしないと、メッセージを表示せずにメッセージを作成するだけです。

リスナーの

、あなたはUIスレッド上で(トーストメッセージ以外の)すべてのGUIの変更を実行していることを確認します(またthis post参照)

+0

リンクが私に問題がある理由を説明しました。ありがとうございました。 – 0xCAFEBABE

0

Toast.makeText(activityname.this, "Download der Dateien fehlgeschlagen. Fahre mit lokaler Version fort.", Toast.LENGTH_LONG).show(); 
0

...これを試してみてください、私は見ることができませんボタンへの参照を取得した後、実際にonClickListenerを設定しています。

b1.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      {     
       Toast.makeText(mContext, mContext.getString(R.string.error), Toast.LENGTH_LONG).show(); 
       } 
      }    
     }); 

また、同じオブジェクト参照b1を異なるボタンに使用しているため、最後のものだけが機能します。

+0

onClickリスナーは、layout.xmlのデザイン時に静的に設定されます。 – 0xCAFEBABE

+0

通常、異なるオブジェクトのメソッドを呼び出すために同じ参照を使用することは問題になりません。あなたはAndroid搭載ですか? – 0xCAFEBABE

関連する問題