2014-02-28 83 views
2

我的Android應用程序有多個活動。每個活動都有一個「回到家」按鈕。例如,主要活動打開子活動A,子活動A打開子活動B.的Android,帶來已經開始活動後到前

在子活動B的屏幕上,有一個「回到家」按鈕,該按鈕應該帶回主活動轉化爲知名度

我試過國旗Intent.FLAG_ACTIVITY_REORDER_TO_FRONT但沒用。

這是我AndroidManifest.xml中的一部分:

... 
<activity android:name="vn.agritrade.Main_Activity" 
android:label="Agritrade" 
android:screenOrientation="portrait" 
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
android:uiOptions="splitActionBarWhenNarrow" 
android:launchMode="singleInstance"> 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN"/> 
    <category android:name="android.intent.category.LAUNCHER"/> 
    </intent-filter> 
</activity> 
... 

這是我如何重啓的主要活動:

/** 
* Relaunch main activity (called by 'Back to Home' button) 
*/ 
public void open_main_activity(View view) { 
    Intent intent = new Intent(this,Main_Activity.class); 
    intent.putExtra(DEFAULT_EXTRA,""); 
    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    startActivity(intent);  
} 

我應該需要什麼?

+1

因爲你重現主要活動(我想你沒有保存主要活動的狀態)在家中按下,爲什麼你需要標誌?如果你想在中間活動關閉,你應該明確地完成他們在導航的同時遠離他們 –

+0

是啊,我完成所有的子活動,這是我的最終解決方案 – jondinham

回答

0

我最終的解決方案是:

  • 保持主要活動繼續開放
  • 每次我需要回頭主屏幕:關閉所有的子活動
1

Intent.FLAG_ACTIVITY_CLEAR_TOP可以解決您的問題,下面的代碼

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

Intent intent = new Intent(this,Main_Activity.class); 
intent.putExtra(DEFAULT_EXTRA,""); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

像FLAG_ACTIVITY_REORDER_TO_FRONT一樣,它不工作:( – jondinham

+0

會支持到歷史堆棧的前面,如果它仍然存在,那麼該標誌會將它帶到前面,但你不能追溯地確保操作系統沒有殺死它以重新獲得資源 – mcd

2

使用它可以幫助,

Intent intentHome = new Intent(getApplicationContext(), MainActivity.class); 
    intentHome.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intentHome.putExtra(DEFAULT_EXTRA,""); 
    startActivity(intentHome); 

這是爲我工作。

不要忘記標記爲答案它是幫助你。