【问题标题】:Dynamic parent activity for Android up \ back navigation in Preferences menu首选项菜单中的 Android 向上 \ 后退导航的动态父活动
【发布时间】:2014-09-29 13:45:01
【问题描述】:

我的 Android 应用中有一个选项菜单的偏好活动。 我已在 ActionBar 上启用了向上 \ Back 导航,我需要返回上一个调用选项菜单的活动。 对于 Preference 活动,我可以在清单中使用:

android:parentActivityName="mypackage.com.MainActivity"

但是如何回到其他活动?选项菜单从 4 个不同的活动中调用。

public class Prefs extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);


    ActionBar actionBar = getActionBar();
    // Enabling Up / Back navigation
    actionBar.setDisplayHomeAsUpEnabled(true);


}

}

【问题讨论】:

    标签: android navigation android-actionbar preferences


    【解决方案1】:

    确保您已像这样在清单中声明父活动...

    <activity
                android:name="com.myapp.SetPreferenceActivity"
                android:parentActivityName="com.myapp.MainActivity"
                >
    

    然后确保将案例添加到您的 onOptionsItemSelected 方法中...

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            // Respond to the action bar's Up/Home button
            case android.R.id.home:
                //Take me back to the main activity
                NavUtils.navigateUpFromSameTask(this);
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    

    如果您希望让向上按钮指向自定义 Activity,则可以使用 Intent。

     @Override
            public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                // Respond to the action bar's Up/Home button
                case android.R.id.home:
                    Intent changeActivity = new Intent(this,OtherActivity.class);
          startActivity(changeActivity);
    
                    return true;
                }
                return super.onOptionsItemSelected(item);
            }
    

    【讨论】:

    • 我不想总是返回到 MainActivity。如果我从 SomeActivity.class 调用 Menu,我想回到 SomeActivity.class... 如果我从 OtherActivity.class 调用菜单,我想回到 OtherActivity.class
    • 我编辑了我的答案以包含使用意图进入自定义活动的选项
    • 我需要在运行时知道我来自的 Activity 以返回到名为 Menu 的那个 Activity
    【解决方案2】:

    “后退”按钮的默认行为是将您带回到调用活动。当用户导航应用程序时,系统会维护一个活动的后台堆栈。您是否需要覆盖此功能?请更具体。

    【讨论】:

    • 是的,但我需要告诉 ActionBar 的后退按钮返回调用活动(如设备的物理后退按钮)
    【解决方案3】:

    这样解决:

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case android.R.id.home:
                  finish();
    
            }
            return true;
    
        }
    

    【讨论】:

    • 这不会从当前任务向上导航。这只是关闭当前活动
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    相关资源
    最近更新 更多