如何在Android中结束进度条时更改活动?

时间:2016-09-06 10:45:48

标签: android

我想在进度条结束后更改活动。意味着进度条线结束。我在线程后添加activity2。但是activity2在应用程序运行时启动。为什么会这样?

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        progressBar = (ProgressBar) findViewById(R.id.progressBar1);
        new Thread(new Runnable() {
            public void run() {
                while (progressStatus < 100) {
                    progressStatus += 1;
                    handler.post(new Runnable() {
                        public void run() {
                            progressBar.setProgress(progressStatus);
                        }
                    });
                    try {
                        Thread.sleep(20);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();


        Intent myIntent = new Intent(getApplicationContext(), activity2.class);
        myIntent.putExtra("key", "......"); //Optional parameters
        startActivity(myIntent);

2 个答案:

答案 0 :(得分:1)

您已经创建了一个新线程,负责进度条,而在主线程上执行新的活动代码。您需要在同一个线程中放置开始活动代码。

你能做的是:

new Thread(new Runnable() {
    public void run() {
        while (progressStatus <= 100) {
                progressStatus += 1;
                handler.post(new Runnable() {
                    public void run() {
                        progressBar.setProgress(progressStatus);
                    }
                });
                try {
                    Thread.sleep(20);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        Intent myIntent = new Intent(getApplicationContext(), activity2.class);
        myIntent.putExtra("key", "......"); //Optional parameters
        startActivity(myIntent);
    }
}).start();

答案 1 :(得分:0)

这是因为您在新线程中启动进度条,而intent的开始位于另一个线程中。启动intent的线程不会等待进度条完成,因为它们是异步的。你可以通过在while循环完成后在runnable中启动intent来解决这个问题。