wushan321
wushan321
2017-11-29 08:15
采纳率: 40%
浏览 1.3k

Android 界面不显示的问题。

我的代码如下:
public class mainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView t1=(TextView) findViewById(R.id.t1);
String abc="abc";
for (int j=1;j<10;j++){
t1.setText(String.valueOf(j));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
得到的显示结果为什么是空白屏幕9秒后出现“9”,而不是从1到9每隔一秒显示一个数字?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • chenbaige
    legendCoder 2017-11-29 14:46
    已采纳

    建议不要再主线程中进行耗时任务(如sleep),你可以把你的for循环放到子线程中,然后通过handler及至更新UI,可以实现你要的效果。

    点赞 评论
  • qq_34704170
    qq_34704170 2017-11-29 09:44

    你的活动页面已经出来了,只是执行数据请求了,可以做一个dialog提示,

    点赞 评论
  • wushan321
    wushan321 2017-11-29 10:44

    我的问题可以用下面的代码来演示:
    public class mainActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    TextView t1=(TextView) findViewById(R.id.t1);
    for (int j=1;j<10;j++){
    t1.setText(String.valueOf(j));
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }
    我希望看到显示数字从1到9,每隔一秒变一个数字,但实际上只看到9秒空白的屏幕,然后出现“9”这个数字。什么原因?

    点赞 评论
  • m0_37716624
    秦雅酒食 2017-11-29 12:25

    因为java语句的执行方式原因,java编译器虽然是按顺序执行,但不会等到你执行完再按顺序执行,也就是说,执行到“t1.setText(String.valueOf(j));”该句时,编译器并没有等你执行完这句就马上执行了“Thread.sleep(1000);”也就是休眠一秒,9个循环后还是执行到“Thread.sleep(1000);”这句,等执行完这
    句,就开始执行设置文本的语句,最后j是等于9的,所以你看到的是九秒空白然后出现“9”这个数字

    点赞 评论
  • m0_37716624
    秦雅酒食 2017-11-29 12:29

    你可以设个定时器做这个东西

    点赞 评论
  • z979451341
    键盘舞者113 2017-11-30 03:52

    这是关于Activity的生命周期,因为onCreate是创建Activity,在onStart才会显示activity

    点赞 评论

相关推荐