我需要一些關於活動堆棧的幫助。如何顯示活動堆棧中的活動
在我的應用程序,我有6個屏幕的用戶從
1-->2-->3-->4-->
導航,當我去4的屏幕我有取消按鈕
時,該按鈕用戶點擊它應該去第二個屏幕和
當用戶點擊小鍵盤上的返回按鈕時,它應該去1屏幕已經在活動堆棧如何做到這一點。
請給我一個例子。
我需要一些關於活動堆棧的幫助。如何顯示活動堆棧中的活動
在我的應用程序,我有6個屏幕的用戶從
1-->2-->3-->4-->
導航,當我去4的屏幕我有取消按鈕
時,該按鈕用戶點擊它應該去第二個屏幕和
當用戶點擊小鍵盤上的返回按鈕時,它應該去1屏幕已經在活動堆棧如何做到這一點。
請給我一個例子。
使用onBackPressed()
和意圖機制來啓動或重新顯示必要的活動。
謝謝Madimir,但onBackPressed()在android-1.5中不可用。 – 2011-03-28 07:30:09
然後使用onKeyDown()。 – 2011-03-28 07:41:51
但我想顯示1個已經在活動堆棧中的屏幕。 – 2011-03-28 09:33:23
//對於返回BTN屏幕上的4
Onclick(View v)
{
if(v==Backbtn)
{
finish();
startActivity(new intent(this,SecondActivity.class));
}
}
//爲返回鍵按返回到1個屏幕
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
startActivity(new intent(this,FirstActivity.class));
return true;
}
return super.onKeyDown(keyCode, event);
}
您的代碼將啓動SecondActivity on Third和First on Fourth活動。按下後退按鈕將分別顯示第三和第四個活動。 – pawelzieba 2011-03-28 09:05:27
只需使用FLAG_ACTIVITY_CLEAR_TOP
當用戶點擊按鈕:
Intent intent = new Intent(ActivityD.this, ActivityB.class);
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
當用戶按下回:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(ActivityD.this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}
此代碼將用戶帶到第一活性。活動因爲FLAG_ACTIVITY_SINGLE_TOP
不會被重建。當活動已經在回棧時,將會調用onNewIntent(),您可以在其中使用來自intent的數據。
如果您希望爲您的活動默認使用這些行爲,請將這些標記放置到Android清單中以放入活動聲明中。
出於好奇,這是從1.5?我不知道那個標誌,所以謝謝:) – Viren 2011-03-28 09:04:08
這個標誌是可用的,因爲API 1. :) – pawelzieba 2011-03-28 09:07:54
我已編輯馬答案。 FLAG_ACTIVITY_SINGLE_TOP會帶您進入第一個已經在活動堆棧中的屏幕。 – pawelzieba 2011-03-28 09:52:28