【问题标题】:Activity's Up button to navigate to different activities活动的向上按钮导航到不同的活动
【发布时间】:2018-10-28 21:11:48
【问题描述】:

我有一个活动MyActivity,其工具栏中实现了标准向上按钮(屏幕左上角的左箭头)。

此 Activity 的独特之处在于用户可以从我的应用中的多个 Activity 导航到它。

我需要这个向上按钮来指向用户来自的活动(与 Android 后退按钮的行为相同)。

因为AndroidManifest.xml中的这段代码,它总是直接返回到 Home 活动,即使用户没有立即从那里回来:

<activity
    android:name="com.myapp.activity.MyActivity"
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.myapp.activity.Home"
/>

如何覆盖此行为,以便MyActivity 的向上按钮将用户返回到他来自的活动,而不是总是主页活动?

【问题讨论】:

  • 为什么将其声明为父活动?
  • 如果你不想去主页活动,只需删除声明父活动的元数据

标签: android android-activity android-toolbar android-navigation up-button


【解决方案1】:

首先,用这个替换你的代码。

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

其次,在“MyActivity”类中添加一些代码。

1. 在 onCreate() 方法中,添加该行。

getActionBar().setDisplayHomeAsUpEnable(true);

2。实现onOptionItemSelected(),添加几行代码。

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
                if (id == android.R.id.home) {
                     super.onBackPressed();
                }
        return super.onOptionsItemSelected(item);
    }

希望它有效!

【讨论】:

  • 1) 移除空意图过滤器。 2) 如果您使用的是 appcompat,请使用 getSupportActionBar()。 3) 你的意思可能是this.onBackPressed 而不是super.onBackPressed
【解决方案2】:

如果您不想返回主页活动,只需删除声明父活动的元数据即可。

<activity android:name="com.myapp.activity.MyActivity" />

或者您可以使用工具栏的 onNavigationClick 来定义您自己的后按操作:

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //if you want to go one activity back then put onBackPressed() method
        onBackPressed();
    }
});

【讨论】:

  • 不要混用 Toolbar 和 ActionBar。如果由于清单中的条目而使向上按钮起作用,则意味着工具栏已手动设置为操作栏或存在默认操作栏。使用操作栏 API。
【解决方案3】:

替换为:

 <activity
        android:name=".MyActivity"

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

【讨论】:

  • 此代码从该活动的工具栏中完全删除了向上按钮。我需要保留向上按钮,但让它导航回用户上次打开的活动。
  • 您必须为此使用自定义工具栏
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多