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);
        }

}      

編集
次に、アクティビティを開始するときに使用します。これsampleActivityが最初のアクティビティ(最初の質問)でAsleep、15秒後に表示されるアクティビティ(2番目の質問)です。たとえば、ボタンのクリックリスナーでは次のsampleActivityようにします。

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

なぜスレッドをスリープさせたいのですか?メイン スレッドを検索しますが、スレッド (スリープ) がインテントの前にあるため、ユーザーはインテントに移動しません。

それが理由です。

それで:

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