2017-08-13 3 views
1

私はJavaとAndroid Studioを学んでいます。Andriod Studio Java

私は次のコードを持っています。これは、画面上で最大3百万となることを期待しています。

エミュレータの最後に3,000,000を表示してコンパイルして実行します。私の質問は、私はどのようにしてループの間にテキストボックスの再描画/表示を強制するのですか?

/** Called when the activity has become visible. */ 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     Log.d(msg, "The onResume() event"); 
     TextView textbox1=(TextView)findViewById(R.id.TextView1); 
     for(double l=0; l<=3000000; l++){ 
      textbox1.setText("" + l); 
     } 
    } 
+0

説明してください。するべきこと? –

+0

期待している出力を記述する –

+0

テキストボックスに値が目に見えるほど表示されていることを確認したいと思います。 – Iain

答えて

0

ビューは無効onResume後は、実行が完了しています。

テキストビューでテキストを設定し、アクティビティのある状態(intフィールドのような)を更新し、しばらくしてからインクリメントするコードを登録することができます。 HandlerAsyncTask、またはその他のオプションを使用してコードを延期してください。

ここにはHandlerのクイックアンドダーティーな例があります。

final long DELAY_MILLIS = 50; 
final Handler handler = new Handler(); 
int num = 0; 
final Runnable runnable = new Runnable() { 
    public void run() { 
    if (num >= 3000000) return; 
    textbox1.setText("" + num); 
    num++; 
    // re-register ourself to run in DELAY_MILLIS; 
    handler.postDelayed(runnable, DELAY_MILLIS); 
    } 
}; 

TextView textbox1; 

protected void onResume() { 
    // more efficient to look this up once 
    this.textbox1 = (TextView)findViewById(R.id.TextView1); 
    runnable.run(); // will register itself to re-run 
} 
関連する問題