0

我有一个变量,我已将其设置为 3。每次单击按钮时,它都会递减并执行所需的操作。当它达到 0 时,我希望动作应该在屏幕上显示一段时间,然后它会移动到新的活动。

但问题是当它达到 0 时,它不会持续一段时间让用户看到执行了什么操作,它只是跳转到下一页......有什么办法可以做到这一点?

我正在使用的代码是:

if(ch==0)
{
try {

        Thread.sleep(15*1000);
    startActivity(new Intent("com.example.quizproject.Menu"));
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

使用此代码后,变量达到 0 ,它没有完成上一个动作,而是暂停然后移动到下一个活动。

这个问题有什么可能的解决方案吗?

4

2 回答 2

2

您可以创建一个扩展 Thread 的类,例如MyThread

public class MyThread extends Thread {

    SampleActivity sampleActivity;

    public MyThread(SampleActivity sampleActivity){
        this.sampleActivity = sampleActivity;
    }



        public void run() {
            try {
                sleep(15*1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            Intent i = new Intent(this.sampleActivity, Asleep.class);
            sampleActivity.startActivity(i);
        }

}      

编辑
然后在您想启动 Activity 时使用它,这sampleActivity是第一个 Activity(第一个问题),Asleep是 15 秒后出现的 Activity(第二个问题)。例如,在按钮的单击侦听器中sampleActivity这样做:

MyThread mt = new MyThread(this);
mt.start();
于 2012-08-05T13:21:21.900 回答
0

为什么要让线程休眠?您将查找主线程并且用户不会转到 Intent,因为线程(睡眠)在 Intent 之前。

这就是为什么。

所以:

while (ch <=0) {
Intent i = new Intent (this, menu.class);
startActivity(i);
}
于 2012-08-05T13:13:04.313 回答