嘿,我最近进入了android并制作了我的第一个应用程序,这意味着当用户按下开始按钮时启动60秒的运行计时器。应用程序将内容视图设置为正常并显示60但是当我单击开始按钮时它会成功显示59然后应用程序崩溃。这是代码(它只有一个活动)
public class test1activity extends Activity
{
Thread countdown;
long f, pa, jee;
TextView ytvp;
String s;
TextView uyti;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ytvp = (TextView) findViewById(R.id.textView2);
uyti = (TextView) findViewById(R.id.tv2);
countdown = new Thread() {
public void run() {
jee = (System.currentTimeMillis()) / 1000;
while ((((System.currentTimeMillis()) / 1000) - jee) < 60)
{
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
f = ((System.currentTimeMillis()) / 1000) - jee;
pa = 60 - f;
s = String.valueOf(pa);
ytvp.setText(s);
}
}
}
};
}
public void whenclickstart(View view) {
countdown.start();
}
答案 0 :(得分:2)
您无法从另一个线程(非UI线程)内部设置UI元素。所以你不能在下面这行使用。
ytvp.setText(s);
尝试这样的事情,你不需要为你想做的事情进行线程化
new CountDownTimer(60000, 1000) {
public void onTick(long millisUntilFinished) {
ytvp.setText("" + millisUntilFinished/1000);
}
public void onFinish() {
ytvp.setText(""+0);
}
}.start();
如果您不想使用countdowntimer,请将setText替换为
runOnUiThread(new Runnable() {
public void run() {
ytvp.setText(s);
}
});