使用片段/工具栏返回导航

Hamz4h_

我现在正在用这个挠头。...我有一个ActionBarActivity加载了初始字母Fragment的菜单-活动中原始菜单被放大。现在,我有,选择了一个项目时,导航栏,负载不同的片段和其加入到堆栈中。

当我这样做时,我需要设置以下几项:

  1. 将房屋设为上升指示器
  2. 使主要活动中的选项菜单无效
  3. 设置片段的选项为true
  4. 确保向上指示器正确导航回到原始片段

发生了一件非常奇怪的事情-向上指示器仅出现一次,并且不充当后退按钮,尽管我已经使新菜单无效和膨胀,但是新菜单会附加到原始“活动”菜单中。

编辑:好的,我已经解决了附加问题-忘记menu.clear()onCreateOptionsMenu方法中添加

我的导航抽屉布局具有onClick所有菜单项的方法,这些方法将触发另一个Fragment的加载:

public void navItemClick(View view) {

        switch (view.getId()) {
            case R.id.ripSMS:
                mNavigationDrawer.toggleHome(false);
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                FragmentTransaction mTrans = getSupportFragmentManager().beginTransaction();
                mTrans.replace(R.id.voiceover_frame_layout,new MessageFragment(),"main_ui")
                        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack("msg").commit();
                break;
            case R.id.ripEmail:
                break;
            case R.id.ripSettings:
                break;
        }

        mNavigationDrawer.closeDrawer();
    }

toggleHome:

public void toggleHome(boolean show) {
        mDrawerToggle.setDrawerIndicatorEnabled(show);

        if (!show) {
            mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        } else {
            mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        }
    }

触发该项目后,将onCreate包含无效和hasOptions代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActivity().invalidateOptionsMenu();
    setHasOptionsMenu(true);
}

onCreateOptionsMenu再膨胀另一个菜单布局(包含一个项目所调用的设置)。

如前所述,这只能部分使用一次-第一次使用该项目加载Fragment时,我得到了后退图标,但它也不起作用(在此设置中onOptionsItemSelected可以检查是否按了主页项目-它什么也不做)。当我按下返回按钮时,它将带我回到正确的位置。但是,如果我向后浏览,即使代码运行成功,现在也将更长地显示后退箭头onCreate

Hamz4h_

好的,经过一些反复尝试,我设法解决了这个问题。进行了两项更改:

  1. 实行 addOnBackStackChangedListener
  2. ActionBarDrawerToggle's setToolbarNavigationClickListener 需要设置

因为我只有一个活动(所有其他都是Fragment类),所以我将Backstack侦听器添加到了Parent Activity的onCreate方法中:

getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
        @Override
        public void onBackStackChanged() {
            if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            } else {
                getSupportActionBar().setDisplayHomeAsUpEnabled(false);
            }
        }
    });

回到片段时,这解决了消失的后退箭头。最后,将侦听器添加到我的NavigationDrawer的设置类中:

mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity().onBackPressed();
            }
        });

我想我唯一的问题就是将onOptionsItemSelected方法与之结合使用的一切android.R.id.home但这对我没有用。当然,这可能是我实施事情的方式,但是如果有人对为什么出现任何明显的事情,请告诉我!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何从片段获取工具栏?

来自分类Dev

片段与AppCompat工具栏重叠

来自分类Dev

iOS 7 UITableView使用透明的导航栏和工具栏

来自分类Dev

片段内容覆盖工具栏

来自分类Dev

Android 5.0工具栏片段后退

来自分类Dev

将工具栏设置为片段中的操作栏

来自分类Dev

从片段访问工具栏(及其子项)?

来自分类Dev

将工具栏与片段一起使用

来自分类Dev

在工具栏下方添加片段

来自分类Dev

Android-更新活动中的工具栏标题,同时使用片段处理向后导航

来自分类Dev

如何在v7工具栏上使用工具栏的主页按钮提供向上导航

来自分类Dev

使用工具栏类后,本机返回Codenameone

来自分类Dev

在工具栏中使用片段实现SearchView

来自分类Dev

片段和导航抽屉的不同工具栏

来自分类Dev

在片段中创建工具栏

来自分类Dev

使用工具栏导航回“父级”活动

来自分类Dev

从全屏视频返回后,导航工具栏垂直延伸

来自分类Dev

双工具栏显示在片段上

来自分类Dev

Matplotlib导航工具栏重置Legendstyle

来自分类Dev

如何使用“ addOnDestinationChangedListener”删除底部导航和工具栏

来自分类Dev

Android 5.0工具栏片段后退

来自分类Dev

返回主屏幕时,Android工具栏导航图标不会变回“ 3行”图标

来自分类Dev

在工具栏下方添加片段

来自分类Dev

在片段中创建工具栏

来自分类Dev

片段中的工具栏标题

来自分类Dev

使用导航抽屉模板更改片段中的工具栏

来自分类Dev

工具栏显示在导航栏中

来自分类Dev

从片段更改工具栏

来自分类Dev

工具栏按钮片段重叠