先ほどの質問と似ていますがよろしくお願いします。
コード public class MainActivity extends Activity implements Runnable{ private Handler mHandler; private FrameLayout frameLayout; TextView tv; int x = 0; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); frameLayout = new FrameLayout(this); setContentView(frameLayout); tv = new TextView(this); frameLayout.addView(tv); mHandler = new Handler(); mHandler.postDelayed(this, 1000); } @Override public void run(){ tv.setText("b"); mHandler.post(new Runnable() { @Override public void run() { try{ Thread.sleep(1000); } catch(InterruptedException e){ } x++; tv.setText("x は" + x); } }); mHandler.postDelayed(this, 2000); } }
上のプログラムを実行すると
b
1秒後
xは1
1秒後
b
1秒後
xは2
が繰り返されます。
runメソッドだけ変更
コード public void run(){ tv.setText("b"); mHandler.post(new Runnable() { @Override public void run() { try{ Thread.sleep(1000); } catch(InterruptedException e){ } x++; tv.setText("x は" + x); mHandler.postDelayed(this, 2000); } }); }
このプログラムの場合実行すると
b
1秒後
xは1
3秒後
xは2
3秒後
xは3
が繰り返されます。
またrunメソッドだけ変更
コード public void run(){ tv.setText("b"); mHandler.post(new Runnable() { @Override public void run() { for(int i = 0; i < 5; i++){ try{ Thread.sleep(1000); } catch(InterruptedException e){ } x++; tv.setText("x は" + x); } } }); }
このプログラムを実行すると
b
5秒後
xは5
と表示されました。
b
1秒後
xは1
1秒後
xは2
と「xは5」まで表示されると思ったのですが、b→5秒後→xは5と表示されたのはどうしてなのでしょうか?
ここではfor文が使えない仕様になっているのでしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/05 07:32