【问题标题】:Android : Hiding action bar in fragmentAndroid:在片段中隐藏操作栏
【发布时间】:2015-07-22 14:00:24
【问题描述】:

我有 2 个片段 mainFragmentchildFragment。我想在mainFragment 中显示操作栏,但想隐藏在childFragment 中。一切正常,除了当我从childFragment 回到mainFragment 并再次进入childFragment 操作栏显示几秒钟后被隐藏..

我不知道为什么? 帮助

childFragment我正在这样做

@Override
public void onResume() {
    super.onResume();
    ((ActionBarActivity) getActivity()).getSupportActionBar().hide();
    mainActivity.mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
    getView().setFocusableInTouchMode(true);
    getView().requestFocus();
    getView().setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {

            if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
                // handle back button's click listener

                mainActivity.onBackPressed();
                ((ActionBarActivity) getActivity()).getSupportActionBar().show();
                mainActivity.mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
                return true;
            }
            return false;
        }
    });
}

【问题讨论】:

  • 你能分享你的片段布局代码和隐藏ActionBar的代码吗?

标签: android android-fragments android-actionbar fragment


【解决方案1】:

您应该处理主要活动中的所有转换...在那里您应该根据您的需要处理所有逻辑 - 例如隐藏/显示操作栏等...

【讨论】:

    【解决方案2】:

    尝试在您的片段的 onActivityCreated 方法中执行此操作:

    ((ActionBarActivity) getActivity()).getSupportActionBar().hide();
    mainActivity.mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
    

    编辑: 我假设您正在处理活动中的片段事务。在将活动中的片段替换为:

    getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout, new YourFragment()).commit();
    

    根据您要替换的片段来隐藏和显示操作栏。 (主或子)

    【讨论】:

    • 我提出了另一个解决方案并编辑了我的答案。如果它仍然不起作用,您可以尝试使用工具栏。如果您需要有关如何使用工具栏的帮助,请告诉我,我可以再次编辑我的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多