途中でNoobの質問。下のコードでは、Androidのボタンのテキストを更新します。それから、2秒待ってから再度テキストを更新します。私が2番目のb.setText( "Send data")をコメントすると、スリープ後にb.setText( "Success")がボタンに書き込まれます。そのことについて私がコメントしなければ、ボタン上でテキスト "Success"が表示されず、 "Send data"だけが表示されます。 2番目のb.setText( "Send data")があると、Thread.sleep()がスキップされるようです。 Googleは、setText( "Success")の後にタイマーを追加して、setText()コードがスリープする前に実行される時間を持つようにすることを提案しました。助けてくれなかった。button.setText()とThread.sleep()
final Button b = (Button) findViewById(R.id.button);
b.setText("Send data");
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
b.setClickable(false);
b.setText("Success");
System.out.println("Debug before");
try
{
Thread.sleep(2000);
}
catch (Exception e)
{
}
System.out.println("Debug after");
b.setText("Send data");
b.setClickable(true);
}
});
レンダーループをブロックします。 –
更新を行う新しいスレッドを生成する必要があります。したがって、メインスレッドで待機する代わりに、あなたのthread.sleep()と更新を含む新しいスレッドを生成してください。 –
ありがとう!私はいくつかのバージョンを試しましたが、その後、ボタンを作成したスレッドだけで更新が行われ、それがメインスレッドになるというエラーが出ました。 – BjornW