“do..while”方法的不正确使用
问题描述:
我正在尝试使重复循环在单个文本视图中显示增加的数字。“do..while”方法的不正确使用
总的想法是这种
....
int rep = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.Layout);
do { meth(); } while (rep < 11);
}
private void meth() {
final TextView textv = (TextView) findViewById(R.id.tex);
String srep = Integer.toString(rep);
textv.setText(srep);
if(rep <11) { rep = rep +1; }
}
....
的想法是显示数字在TextView的textv 1至10之一BY ONE在屏幕上。但是当我运行它时,它只显示了10.我试图在meth()中放入一个CountDownTimer,并且也在do {}循环中,但它只是使程序崩溃。
如果有人能指出我这样做的正确方法,将不胜感激。
答
试试这个
private class MethTask extends AsyncTask<String, String, String> {
protected String doInBackground(String... urls) {
do { meth(); SystemClock.sleep(1000);
} while (rep < 11);
return "";
}
}
而且从的onCreate()这样的呼吁:
new MethTask().execute("");
答
你无法运行此代码到OnCreate中另有一件事,你不会看到任何东西,因为的onCreate之前运行该活动已呈现。 所以,你应该做的是先建立一个CountownTimer,在OnStart方法开始这样说:
handler.postDelayed(new Runnable() {
startCountDown();
}, 1000);
这样你就会知道,如果你使用CountownTimer
活动显示
UPDATE 有没有必要调用睡眠或其他类似的方法
+0
我试过在meth()中的CountDownTimer;方法,文本显示在Finish上。有一个延迟,但在最初的延迟后,只显示10。我也尝试了Do {}循环内的CountDownTimer。该方法只是崩溃的应用程序。 – user65163 2014-12-05 14:54:23
为什么你在meth中创建TextView?在你的周期之前做。 – nikoliazekter 2014-12-05 14:34:08
这是因为从1增加到10发生在不到一秒 – 2014-12-05 14:36:04
据我了解,你需要睡眠(1000);或者是在做正文的时候。 – nikoliazekter 2014-12-05 14:39:33