2013-04-21 91 views
0

我有三個帶菜單的活動。在菜單中可以切換活動。我把「機器人:launchMode =「singleInstance」來AndroidManifest爲我留在每個活動修改Android:跨菜單切換活動

------------------ 
|     | 
|     | 
|     | 
|  A   | 
|     | 
|     | 
|     | 
|     | 
|------------------| 
|##A##| B | C | 
------------------ 
     A Activity 

------------------ 
|     | 
|     | 
|     | 
|  B   | 
|     | 
|     | 
|     | 
|     | 
|------------------| 
| A |##B##| C | 
------------------ 
     B Activity 

------------------ 
|     | 
|     | 
|     | 
|  C   | 
|     | 
|     | 
|     | 
|     | 
|------------------| 
| A | B |##C## | 
------------------ 
     C Activity 

這是正常工作我的問題是,當我按下返回鍵,因爲我想退出。 ,我必須推三次才能關閉應用程序

我想要消除這個過程,所以當我在A,B或C活動,並且我推回了鍵時,關閉它們,不知何故我想跳回棧。

我嘗試使用Activity Flags。例如:

Intent intent=new Intent(this, B.class); 
    intent.setFlag(Intent.FLAG_ACTIVITY_TASK_ON_HOME); 
    startActivity(intent); 

有了這個我有兩個問題。它只支持API 11或更高版本,並且不會關閉其他Activity。 (當我再次啓動,我看到其他的活動,修改爲保持)
我知道* 片段·s,且會更容易與這些有很多,但我有沒有* 片段 * S需要解決。 對不起,我的英語不好。

+0

我真的會推薦你使用Fragments,如果你使用它們,就不會有任何問題。 – Egor 2013-04-21 21:21:01

回答

0

你已經知道使用Fragments會更容易,建議使用Fragments但是如果你想這樣做......在你開始每一個新的活動之前調用finish();

Intent intent=new Intent(this, B.class); 
startActivity(intent); 
finish(); 

它將完成活動A和啓動活動B.這樣,如果你壓回在活動B你的應用程序將關閉。

+0

是的,但當我切換活動 – 2013-04-21 21:38:51

+0

什麼修改? – Sharj 2013-04-21 21:41:14

+0

如果我打電話完成,活動將被關閉,並重置狀態。我失去了數據從EditText填寫哪個用戶。將會有複雜的控制器,所以我不想保存。 – 2013-04-22 05:08:04

0

你想要的是一個自定義Back活動堆棧:

// Creates an explicit intent for the top activity that will be opened (the map) 
Intent resultIntent = new Intent(context, <your_activity>.class); 
resultIntent.putExtras(extras); 

// The stack builder object will contain an artificial back stack for the 
// started Activity. This ensures that navigating backward from the 
// Activity leads out of your application to the Home screen. 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); 

// Adds the back stack for the Intent (but not the Intent itself) 
stackBuilder.addParentStack(<your_activity>.class); 
// Adds the Intent that starts the Activity to the top of the stack 
stackBuilder.addNextIntent(resultIntent); 
stackBuilder.startActivities(); 

什麼代碼基本上是幹什麼的,是從逼人退的活動和下一個活動,都是一樣的。這樣,當按下後退時,您將存在於主屏幕中。

+0

這是一個蜂巢功能,但我剛剛注意到它的支持庫的一部分。我正在查。 – 2013-04-22 05:14:16