我使用的动作条和它的“向上”按钮,从一个细节活动返回主活动,工作正常。 同样,用户可以按系统的“返回”按钮返回主活动。
在我的主要活动,在onCreate()
数据从互联网上下载的应用程序后开始显示。 我注意到,当我用动作条“向上”按钮,从细节到主要活动onCreate()
运行时,重新下载数据。 但是onCreate()
不运行时,我使用系统“返回”按钮,因此立即示出了主要的活动图。
我在细节行为使用代码来实现“向上”按钮:
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
我想“向上”按钮表现得像个“后退”按钮,而不是重新运行onCreate()
但我不确定如何做到这一点,或者代码路径中的“后退”按钮工具,返回的主要活动。
谢谢!
相反,开始了一个全新的活动只是完成细节活动,您在
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
然后,你将返回到活动堆栈上一个活动(主活动),并没有的onCreate应该叫
如果你想最多做的正是回做什么,你可以这样做:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
break;
}
return super.onOptionsItemSelected(item);
}
需要注意的是默认的实现onBackPressed()
只是调用finish()
但onBackPressed
可以被覆盖。
我认为更好的解决方案中可以找到这篇文章 。
调用finish()
工作在特定的情况下,但不一定总能产生描述的行为在文件如:
通过调用
Intent intent = NavUtils.getParentActivityIntent(this);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
NavUtils.navigateUpTo(this, intent);
您将返回到父活动在你离开时的状态。 如果你有一个平坦的应用程序的结构,它仍然会表现就像后退按钮。
一个真正的“家”的功能,你应该看到API演示,在“应用程序/活动/活动重新排序”。
原因:如果你有这样的事情:activity1-> activity2-> activity3,现在你希望按操作栏上的主页按钮进入活动1?
我认为最简单的方法是重写的详细活动添加标志“Intent.FLAG_ACTIVITY_CLEAR_TOP”的“getParentActivityIntent”的方法:
@Nullable
@Override
public Intent getParentActivityIntent() {
Intent intent = super.getParentActivityIntent();
if (intent != null) {
return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
return intent;
}
还有另一种解决方案,它可以在手人。 我已经当用户按下后退和ActionbarBack按钮相同的双重行为。 我很好与返回BTN行为。 我不想活动重新创建。 所以我推翻的方法
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
工作正常,我