Android 不正确地使用;“当”时;方法
我正在尝试创建一个重复循环,以便在单个文本视图中显示不断增加的数字 总的想法是这样的Android 不正确地使用;“当”时;方法,android,do-while,Android,Do While,我正在尝试创建一个重复循环,以便在单个文本视图中显示不断增加的数字 总的想法是这样的 .... int rep = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.Layout); do { meth(); } while (rep < 11); }
....
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; }
}
....
。。。。
int rep=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
do{meth();}while(rep<11);
}
私有无效meth(){
最终TextView textv=(TextView)findViewById(R.id.tex);
字符串srep=Integer.toString(rep);
textv.setText(srep);
如果(rep试试这个
private class MethTask extends AsyncTask<String, String, String> {
protected String doInBackground(String... urls) {
do { meth(); SystemClock.sleep(1000);
} while (rep < 11);
return "";
}
}
首先,您不能将此代码运行到oncreate中,否则您将看不到任何内容,因为oncreate是在呈现活动之前运行的。
因此,您应该首先创建一个CountownTimer,在onStart方法中以以下方式启动它:
handler.postDelayed(new Runnable() {
startCountDown();
}, 1000);
这样,您将确保活动已显示
更新
如果使用CountownTimer
则无需调用sleep或其他类似方法为什么要使用meth创建TextView?请在循环之前创建它。因为从1到10的增量发生在不到一秒钟的时间内,因为我知道您需要睡眠(1000);或类似于do body中的内容。您可以使用sleep在每个增量中放置一些暂停,只需将行放在do{}中即可,即do{SystemClock.sleep(1000);meth();}当…单击活动时,屏幕会变黑10秒,然后再次显示,仅显示数字10。我认为它实际上“休眠”了10秒,直到循环在显示之前结束。您应该在AsyncTask中调用meth(),并从onCreate()调用该AsyncTask。我不熟悉AsnycTask,你能详细说明一下吗?我在meth()方法中尝试了CountDownTimer,文本显示为onFinish。有一个延迟,但在初始延迟之后,只显示10。我还在do{}循环中尝试了CountDownTimer。该方法会使应用程序崩溃。
handler.postDelayed(new Runnable() {
startCountDown();
}, 1000);