【发布时间】:2015-12-17 00:50:07
【问题描述】:
正如我所见,Android 不会在 setContentView(...) 之类的语句之前执行所有语句。
例如,我不能这样做:
Calendar c = Calendar.getInstance();
int seg = c.get(Calendar.SECOND);
int min = c.get(Calendar.MINUTE);
int sum = 1;
for (int i = seg; i < 5 + seg; i++){
for(int j = min; j < 10000+ min; j++){
seg = c.get(Calendar.SECOND);
sum += seg;
}
Toast.makeText(getApplicationContext(), Integer.toString(sum), Toast.LENGTH_SHORT).show();
}
setContentView(R.layout.results);
Android 在计算完成之前执行 setContentView。我怎么能做到之前的Android等待语句?
【问题讨论】:
-
您的具体要求是什么?
-
对不起,你错了。 Java 按顺序执行函数中的每一行。在上一行完成之前,它不可能跳过行或转到下一行。您的代码中的某处可能存在错误,但事实并非如此。如果在设置内容视图之前您没有看到 5 个祝酒词,那是因为显示祝酒词会向另一个线程发送消息。没有办法停止直到所有的 toast 都显示出来,如果你需要这个功能,你需要滚动你自己的 toast-like UI。
-
一般来说,
Toast是几乎所有 UI 问题的错误解决方案。像我这样的人在书中使用它是为了简单起见,而不是因为使用Toast是个好主意。