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

当进度条在Android中结束时,如何更改活动?,android,Android,我想在进度条结束后更改活动。表示进度条线程结束。我正在线程后面添加活动2。但是活动2在应用程序运行时启动。为什么会这样 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = (Prog

我想在进度条结束后更改活动。表示进度条线程结束。我正在线程后面添加
活动2
。但是
活动2
在应用程序运行时启动。为什么会这样

   @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);
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar=(progressBar)findViewById(R.id.progressBar1);
新线程(newrunnable()){
公开募捐{
而(进度状态<100){
progressStatus+=1;
handler.post(新的Runnable(){
公开募捐{
progressBar.setProgress(progressStatus);
}
});
试一试{
睡眠(20);
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}
}).start();
Intent myIntent=newintent(getApplicationContext(),activity2.class);
myIntent.putExtra(“键”、“…”);//可选参数
星触觉(myIntent);

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

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

您可以做的是:

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();
new线程(new Runnable()){
公开募捐{

while(progressStatus)是否有错误发生?……。@sushildlh否没有错误,但活动未切换。您的代码意图代码应位于progressBar下方。SetProgressStatus(progressStatus);线程内部。在这种情况下,您的活动将在线程结束之前启动。