【问题标题】:Use UP caret in ActionBar to go from Activity to Fragment - Android 4.0+在 ActionBar 中使用 UP 插入符号从 Activity 转到 Fragment - Android 4.0+
【发布时间】:2015-02-04 07:10:45
【问题描述】:

我整天/整夜都在研究解决方案,但似乎有很多选择可以从 ActivityFragment,但在 S.O. 上没有一个对我有用。在实践中,我在Activity 中,我想在ActionBar 中使用我的应用程序徽标单击它,然后返回Fragment。这个Fragment 是我的Activity 的“父类”,这意味着我点击了Fragment 中有一个按钮,我点击了我的Activity

但我无法让我见过的所有代码 sn-ps 都能正常工作。

我已将其放入我的onCreate()Activity

// Shows the up carat near app icon in ActionBar
getSupportActionBar().setDisplayUseLogoEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

我也将它包含在我的ActivityonOptionsItemSelected() 方法中:

// Handle action bar actions click
    switch (item.getItemId()) {
        case android.R.id.home:
            android.app.FragmentManager fm= getFragmentManager();
            fm.popBackStack();

            return true;
        default:
            return super.onOptionsItemSelected(item);
    }

结果是我看到一个“后退按钮”克拉(如下所示),但是当我单击它时,什么也没有发生。我应该回到我来自的Fragment。仅供参考,我的Fragment 类实际上扩展了Fragment(不是FragmentActivity)。我的Activity 扩展了ActionBarActivity,所以我正在寻找适用于Android 4.0+ 的答案。此外,我的Fragment 在返回时不需要相同的实例(必然)。它只有按钮,所以一个新实例很好,如果它被创建,在返回时。

感谢您的帮助!!

【问题讨论】:

    标签: android android-fragments android-actionbar android-navigation


    【解决方案1】:

    需要一条小线:finish()。由于FragmentManager 在其后栈中弹出一个项目,通过使用fm.popBackStack();,它仍然需要某种操作才能转到前一个片段。添加finish() 使当前Activity 结束。上下文中的行:

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            // Handle action bar actions click
            switch (item.getItemId()) {
                case android.R.id.home:
                    android.app.FragmentManager fm= getFragmentManager();
                    fm.popBackStack();
                    finish();
    
                    return true;
                default:
                    return super.onOptionsItemSelected(item);
            }
        }
    

    我上面的其余代码是正确的,也是必需的,以使其全部正常工作。现在,我可以导航到我的NavigationDrawer 片段,单击那里的按钮转到Activity,然后随时按下导航向上插入符返回到我的Fragment。这在三星 Galaxy5 手机上测试成功。

    您在ActionBar Android doc使用应用程序图标导航部分中没有读到的一件事是,由于您使用的是片段返回,因此您不能使用他们的@987654331 @标签指令在清单文件中指定父活动,因为你没有返回到Activity!而是Fragment。因此,必须通过使用FragmentManager 来实现解决方法。

    【讨论】:

      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多