2014-11-25 50 views
0

我有以下活動:甲 - >乙 - 「ç - > D.如果我按從活動後退按鈕DI想回去A.這是代碼:的Android返回導航

活動甲

// Launch Activity B 
Intent intent = new Intent(); 
intent.setClass(ActivityA.this, ActivityB.class); 

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

活動B

// Launch Activity C 
Intent intent = new Intent(); 
intent.setClass(ActivityB.this, ActivityC.class); 

startActivity(intent); 

活動ç

// Launch Activity D 
Intent intent = new Intent(); 
intent.setClass(ActivityC.this, ActivityD.class); 

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

startActivity(intent); 
finish(); 

活動d我按下回來了,我想回去到活動答:我不想使用結束(),每個我打開活動時間,因爲當我在活動CI希望能夠返回到B,但是當我在Activity D中時,我想直接轉到A,但不幸的是,當前的實現使應用程序關閉。

任何人都可以幫助我嗎? 感謝

+0

簡單的方法是使用標誌SINGE_TASK從活動D調用活動A. – 2014-11-25 14:33:37

+0

從意圖去除標誌B – njzk2 2014-11-25 14:33:40

+0

您可以添加覆蓋onBackPressed()方法並在其中向活動A聲明其意圖。 – thestrongenough 2014-11-25 14:33:56

回答

1

也許這將解決:(記住要覆蓋onBackPressed)

Intent intent = new Intent(this,A.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

意義的國旗:

如果設置,以及正在啓動的活動已經在當前任務運行,那麼不是啓動該活動的新實例,而是關閉其上的所有其他活動,並將此Intent作爲新Intent傳遞給(現在在最上面的)舊活動。

例如,考慮一個由以下活動組成的任務:A,B,C,D。如果D調用startActivity()並將Intent解析爲活動A的組件,則B,C和D將完成並且A收到給定的Intent,導致堆棧現在爲:A.

0

您可以捕獲Activity D上的後退按鈕,然後啓動具有FLAG_ACTIVITY_CLEAR_TOP標誌的Activity A。

// For Android 2.0 and above 
@Override 
public void onBackPressed() { 

    Intent intent = new Intent(currentActivity.this, ActivityA.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
} 

在這裏看到的FLAG_ACTIVITY_CLEAR_TOP

你也可以Provide Up Navigation作爲另一個例子說明解釋。然而,這作品不同背襯see here for comparison

1

,如果你想simplfy你可以嘗試向上導航enter image description here

<application ... > 
    ... 
    <!-- The main/home activity (it has no parent activity) --> 
    <activity 
     android:name="com.example.myfirstapp.MainActivity" ...> 
     ... 
    </activity> 
    <!-- A child of the main activity --> 
    <activity 
     android:name="com.example.myfirstapp.DisplayMessageActivity" 
     android:label="@string/title_activity_display_message" 
     android:parentActivityName="com.example.myfirstapp.MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.myfirstapp.MainActivity" /> 
    </activity> 
</application> 
+0

不幸的是,我不被允許使用向上導航。但謝謝你的回答。 – Laura 2014-11-26 06:39:40

0

覆蓋後退按鈕方法,並添加自定義導航:

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this, ActivityA.class); 
    startActivity(intent); 
}