如何设置多个父活动以使用android后退按钮
Posted
技术标签:
【中文标题】如何设置多个父活动以使用android后退按钮【英文标题】:How to set multiple parent activities for using android back button 【发布时间】:2014-06-21 22:48:47 【问题描述】:我有一个应用程序从不同的活动中多次调用一个活动。 因此,我试图在此活动的操作栏中实现“后退按钮”。 为此我使用:
switch (item.getItemId())
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
default:
return super.onOptionsItemSelected(item);
和:
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="view.TweetsIndividuoActivity" />
现在的问题是,我无法为我的 android 清单设置父活动,因为我不知道谁是该活动的父活动。
解决办法是什么?
谢谢
【问题讨论】:
【参考方案1】:这比你想象的要容易。
switch (item.getItemId())
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
方法finish()
将破坏您的活动并显示启动它的活动。如果我理解正确,这就是你想要的。
您当前的解决方案适用于您每次都想回到同一个父母的情况,例如Gmail 应用程序可以做到这一点。当您从通知中打开电子邮件然后按操作栏后退按钮时,它不会导航回主屏幕,但会显示 Gmail 收件箱。
【讨论】:
谢谢!但如果这种方式有效,我不明白为什么要使用:NavUtils.navigateUpFromSameTask(this); 这意味着我在答案的最后部分写的内容。活动在任务中运行。如果您打开属于另一个任务的活动,您必须选择: 1. 回到以前可见的活动;这就是后退按钮的作用 2. 返回当前任务的上一个活动。详细解释请阅读developer.android.com/guide/components/…。 Ughhh 我被某人使用闪亮的 Google Util (NavUtils.navigateUpFromSameTask(this);)...【参考方案2】:@Override
public boolean onOptionsItemSelected(MenuItem item)
int id = item.getItemId();
if (id == android.R.id.home)
onBackPressed();
return true;
return super.onOptionsItemSelected(item);
您将始终返回到您启动新活动的活动。
不需要使用下面的代码。
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="view.TweetsIndividuoActivity" />
【讨论】:
【参考方案3】:我也是 Android 新手,但我通过使用“startActivityForResult(intent,1)”而不是“startActivity(intent)”调用第二个活动解决了这个问题。我认为这使它成为父/子关系而不是兄弟活动...?
我不需要使用 onOptionsItemSelected() 或 finish()。
【讨论】:
以上是关于如何设置多个父活动以使用android后退按钮的主要内容,如果未能解决你的问题,请参考以下文章