Android的动作条上按钮对系统后退按钮(Android Actionbar Up button

2019-06-23 22:53发布

我使用的动作条和它的“向上”按钮,从一个细节活动返回主活动,工作正常。 同样,用户可以按系统的“返回”按钮返回主活动。

在我的主要活动,在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() 但我不确定如何做到这一点,或者代码路径中的“后退”按钮工具,返回的主要活动。

谢谢!

Answer 1:

相反,开始了一个全新的活动只是完成细节活动,您在

switch (item.getItemId()) {
   case android.R.id.home:
      finish();
      return true;

然后,你将返回到活动堆栈上一个活动(主活动),并没有的onCreate应该叫



Answer 2:

如果你想最多做的正是回做什么,你可以这样做:

@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可以被覆盖。



Answer 3:

我认为更好的解决方案中可以找到这篇文章 。

调用finish()工作在特定的情况下,但不一定总能产生描述的行为在文件如:

通过调用

Intent intent = NavUtils.getParentActivityIntent(this); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
NavUtils.navigateUpTo(this, intent);

您将返回到父活动在你离开时的状态。 如果你有一个平坦的应用程序的结构,它仍然会表现就像后退按钮。



Answer 4:

一个真正的“家”的功能,你应该看到API演示,在“应用程序/活动/活动重新排序”。

原因:如果你有这样的事情:activity1-> activity2-> activity3,现在你希望按操作栏上的主页按钮进入活动1?



Answer 5:

我认为最简单的方法是重写的详细活动添加标志“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;
}


Answer 6:

还有另一种解决方案,它可以在手人。 我已经当用户按下后退和ActionbarBack按钮相同的双重行为。 我很好与返回BTN行为。 我不想活动重新创建。 所以我推翻的方法

     @Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

工作正常,我



文章来源: Android Actionbar Up button versus system Back button