あるアクティビティで、
初期処理で画面に画像を表示して、
何も操作をせず、その直後(or数秒後)に別のアクティビティを表示するような処理を作ろうと思っています。
onCreate文で、
setContentView((R.layout.XXXX);
Intent intent = new Intent( XXActivity.this, YYActivity.class );
startActivity( intent );
としてみたのですが、
これだと何も表示せずにすぐに次のアクティビティを呼び出ししてしまいます。
ちょっとひねって、Runnable とHundlerを使って
setContentView((R.layout.XXXX);
runnable = new Runnable() {
@Override
public void run() {
handler.post(new Runnable(){
@Override
public void run() {
Intent intent = new Intent( SelectNextPageActivity.this,
StarBabyCreaterProt01Activity.class );
startActivity( intent );
}
});
}
};
handler.postDelayed(runnable,1000);
こんな感じにしてみましたが、これもうまくいきませんでした。
何か良い方法はありませんか?
江川と申します。
> handler.postDelayed(runnable,1000);
> こんな感じにしてみましたが、これもうまくいきませんでした。
実際に試せてはいないのですが、1秒後に遷移しそうに見えます。
どううまくいきませんでしたか?
------------------------------------------
EGAWA Takashi
2012年2月5日23:25 ryo okuda <ddn...@gmail.com>:
> --
> このメールは Google グループのグループ「Android-SDK-Japan」の登録者に送られています。
> このグループに投稿するには、android-...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-sdk-ja...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-sdk-japan?hl=ja からこのグループにアクセスしてください。
>
画像が表示されず、すぐに次の画面が表示されます。
待ち時間もなさそうに見えます...?
ログには以下のような出力が出ています。
ちなみに、アクティビティの流れをざっくり言うと、
YYProt01Activity(タイトル画面)
→ GameFlushCardActivity5(ゲーム画面)
→ SelectNextPageActivity2(画像を表示する画面) ←うまくいかないのはここ
→ YYProt01Activity (タイトル画面)
こんな感じで表示しようとしています。
なんか、動きを見ると、最後のタイトル画面表示時にYYProt01Activityが2つ表示されているようです。
02-05 15:56:41.854: INFO/ActivityManager(59): Starting activity:
Intent { cmp=xxx.xxx.xxx/.SelectNextPageActivity2 (has extras) }
02-05 15:56:41.895: DEBUG/GameFlushCardActivity5(9027): onPause:start
02-05 15:56:41.924: DEBUG/SelectNextPageActivity2(9027): onCreate:start
02-05 15:56:41.985: DEBUG/SelectNextPageActivity2(9027): onResume
02-05 15:56:41.994: WARN/ActivityManager(59): Duplicate finish request
for HistoryRecord{44fb3298 xxx.xxx.xxx/.SelectNextPageActivity2}
02-05 15:56:42.024: DEBUG/AudioSink(34): bufferCount (4) is too small
and increased to 12
02-05 15:56:44.994: INFO/ActivityManager(59): Starting activity:
Intent { cmp=xxx.xxx.xxx/.YYProt01Activity }
02-05 15:56:44.994: WARN/ActivityManager(59): startActivity called
from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for:
Intent { cmp=xxx.xxx.xxx/.YYProt01Activity }
02-05 15:56:45.004: WARN/TimedEventQueue(34): Event 27 was not found
in the queue, already cancelled?
2012年2月6日0:36 egg <t.e...@gmail.com>:
adamrockerです。
ActivityのライフサイクルでonCreateでは画面描画されません。
onStartかonResumeをオーバーライドしてみては如何でしょうか?
どちらにするかは画面遷移の仕様に依存しますので、リファレンスのActivityを御参考にしてください。
なお、Acticityの画面遷移アニメーションは機種やAndroidのバージョンによって異なりますのでお気をつけください。
画面表示されてからということであれば、onWindowFocusChanged(boolean) で
Intent intent = new Intent( XXActivity.this, YYActivity.class );
startActivity( intent );
を実行すればおkです。
http://developer.android.com/reference/android/app/Activity.html#onWindowFocusChanged(boolean)
2012年2月5日23:25 ryo okuda <ddn...@gmail.com>:
上記の方法で解決しました!
ありがとうございました。
2012年2月6日12:10 Ishikawa Hiromi <ishi...@gmail.com>: