ボタンをクリックすると、レイアウトを表示する方法を試行しています。 数秒後に、私は新しい活動/レイアウトを表示したい。数秒後に画面を切り替える(スレッド/インテント) - Android
これを行う方法に関する提案はありますか?
ボタンをクリックすると、レイアウトを表示する方法を試行しています。 数秒後に、私は新しい活動/レイアウトを表示したい。数秒後に画面を切り替える(スレッド/インテント) - Android
これを行う方法に関する提案はありますか?
私は、UIスレッド上で待機しないことをお勧め。
タスクにはHandler
を使用できます。 run
メソッドは、Handler
が作成された同じスレッドで実行されます。
//delay in ms
int DELAY = 1000;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
startActivity(intent);
}
}, DELAY);
この遅延中にUIが何かを行う必要がありますか?そうでない場合は、ボタンのハンドラー内で
Thread.sleep(timeToWaitInMilliseconds);
を使用することができます。これによりUIスレッドは数秒間停止しますが、遅延中にUIが「フリーズ」します。
若干優れた選択肢は、新しいスレッドであるAsyncTaskとHandlerを使用して、新しいアクティビティの開始を遅延させてからそのハンドラで新しいアクティビティを開く時間にそのスレッドをスリープさせることです。
asynctaskは、ユーザーが「遅延」中にUIとやりとりすることができるように、あなたのケースでは少し良いと思っています。ここAsyncTasks上
さらに詳しい情報:
http://developer.android.com/reference/android/os/AsyncTask.html
私はあなたの提案を試みました。ボタンをクリックすると、レイアウトを表示するよう求められます。 5,000ミリ秒の遅延を求めて、新しい活動に行きます。 何らかの理由で5秒間遅れていて、レイアウトを1秒間点滅してから新しいアクティビティに移動しています。 – user1274830
私は何か似たようなことをしましたが、私はそれが "遅れて何かをしたい"ところで、クラスを呼び出そうとすると好きではありません。 インテントnewClass =新しいインテント(this、ClassName.class); this.startActivity(newClass); – user1274830
this.startActivity(..)を呼び出さないでください。これを省略してstartActivity(..)を呼び出してください。 – thaussma
Elipseはこのコード行を好きではありません - Intentクラス= new Intent(this、Failed.class); - それは私がそれを作ることを望んでいる - インテントクラス=新しいインテント(); - しかし、それはどんなクラスになるのか分からない。非常にイライラ。 – user1274830