2014-02-15 56 views
37

我有两个活动。说Activity AActivity B
Activity A我点击一个按钮即可启动Activity B这是我用这个代码:如何恢复活动,而不是重新启动时,从行动栏“上”

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


现在,在这一点上,我在 Activity B。在 Activity B的创建方法上,我启用了向上按钮。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_view_news); 

    getActionBar().setDisplayHomeAsUpEnabled(true); //Here// 
} 

,并就“向上”按钮事件句柄,我有这样的代码:

public boolean onOptionsItemSelected(MenuItem item){ 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      finish(); 
      NavUtils.navigateUpFromSameTask(this); 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 


现在我决定回去 Activity A我点击操作栏中的向上按钮它看起来像这样: enter image description here

现在的问题是,当我点击“向上按钮”,它可以追溯到Activity A这是很好的,但它重新启动吧。如何使它停止重新启动?我只是想要它简历

当我使用我的硬件后退按钮时,它按预期工作。即它转到Activity A并恢复它而不是重新启动它。

我希望我的活动恢复,因为在该活动中,我在网上下载一些字符串,所以我不希望它不断重新下载数据时,用户活动B老话 - >活动A


编辑我对 Activity B部分清单文件看起来是这样的:

<activity 
    android:name="com.example.android.ActivityB" 
    android:label="@string/title_activity_view_news" 
    android:parentActivityName="com.example.android.ActivityA"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.example.android.ActivityA" /> 
</activity> 


编辑2 [答案] 好了,所以,这是PRET ty意外,但在我的AndroidManifest.xml中的Activity A部分中,我不得不添加下面的行代码。 android:launchMode="singleTop"所以现在看起来是这样的:

<activity 
    android:name="com.example.android.ActivityA" 
    android:label="@string/app_name" 
    android:launchMode="singleTop"> //**HERE**// 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

The explanation to this is given here

+0

是你声明ActivityA作为家长的活动? –

+0

@mohammedmomn我相信我已经这么做了。检查我的'AndroidManifest.xml'我发布在我的问题末尾 – Krimson

+2

不知道这是你需要的,但你可以看看:http://stackoverflow.com/a/16147110/3286163 – singularhum

回答

52

如果已经添加了作为一个答案,而不是评论..但在这里你去,所以如果你想要,以便其他人可以在需要看你能接受。

https://stackoverflow.com/a/16147110/3286163

基本上总结了Android总会重新创建活动,除非你不指定它与

android:launchMode="singleTop" 

注意:它不会工作,如果返回的活动是不是在顶部在参考文献中提到的后退堆叠。

对于其他人,请upvote在url中的答案,而不是我的,如果你觉得这个有用。

+1

“..如果你觉得这个很有用,请在url中取代我的答案。”哇,真是个好人! – Sakiboy

0

您也可以达到同样的效果编程

Intent upIntent = NavUtils.getParentActivityIntent(this); 
upIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
NavUtils.navigateUpTo(this, upIntent); 
相关问题