工具栏未显示'向上箭头'

时间:2016-03-29 15:55:40

标签: android navigation fragment toolbar android-toolbar

我有MainActivity,它持有MapFragment。而且我其中很少有其他的framgents是TabFragment,它有用户设置。

我在activity_main.xml中添加了工具栏,如下所示:

<android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:minHeight="?attr/actionBarSize"

                app:theme="@style/Theme.AppCompat.NoActionBar"
                app:popupTheme="@style/ToolbarStyle">

            </android.support.v7.widget.Toolbar>

根据获得可见性的片段,我更改“标题”并将导航菜单(汉堡菜单)更改为向上箭头,反之亦然。以下是我用来做同样的方法:

        //Method to show the toolbar..  
        protected void showToolbar(final boolean isAnimation) {
            if (mToolbar != null) {
                if (mActivity.getSupportActionBar() == null) {
                    mActivity.setSupportActionBar(mToolbar);
                }

                if (isAnimation) {
                    mToolbar.animate().translationY(0)
                            .setInterpolator(new DecelerateInterpolator()).start();
                }
                if (mToolbar.getVisibility() != View.VISIBLE) {
                    mToolbar.setVisibility(View.VISIBLE);
                }
                mActivity.getSupportActionBar().setHomeButtonEnabled(true);
                mActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }


        //Method to change the title and color of the toolbar..  
        public void setToolbarColor(final String title, final int backgroundColor, final int textColor,
                                    final boolean isNavigationIcon) {
            if (mToolbar != null) {
                mToolbar.setTitle(title);
                mToolbar.setBackgroundColor(backgroundColor);
                mToolbar.setTitleTextColor(textColor);

                if (mActivity.getSupportActionBar() == null) {
                    mActivity.setSupportActionBar(mToolbar);
                }
                ActionBar actionBar = mActivity.getSupportActionBar();
                actionBar.setHomeButtonEnabled(isNavigationIcon); // disable the button
                actionBar.setDisplayHomeAsUpEnabled(isNavigationIcon); // remove the left caret
                actionBar.setDisplayShowHomeEnabled(isNavigationIcon); // remove the icon
            }
        }

下面是我从MapFragment的onResume()调用这些方法的方法:

public void onResume() {
        setToolbarColor(getString(R.string.title_main),
                ContextCompat.getColor(getActivity(), R.color.blue),
                ContextCompat.getColor(getActivity(), R.color.white),
                false);

        mActivity.unlockDrawer();
        showToolbar(true);
}  

这就是我从TabsFragment的onResume()调用这些方法的方式:

public void onResume() {
    setToolbarColor(getString(R.string.title_tabs),
            ContextCompat.getColor(mActivity, R.color.black),
            ContextCompat.getColor(mActivity, R.color.white),
            true);

    mActivity.lockDrawer();
    showToolbar(true);
}  

所有在正常情况下都能正常工作.MapFragment显示&#39;导航图标&#39;它的标题和TabFragment显示&#39;向上箭头&#39;它的标题。
 但是问题是当我在行中添加两个片段时,TabFragment仍会显示“导航”图标&#39;单击TabFragment销毁并左侧菜单打开。连续我的意思是我立即添加了Map和Tab片段。

mFragmentManager.beginTransaction().add(R.id.container, mapFragment, "map").addToBackStack("map").commit();  
mFragmentManager.beginTransaction().add(R.id.container, tabsFragment, "tabs").addToBackStack("tabs").commit();  

我这样做是因为我想启动制表符片段以强制用户填写缺少的内容。

我的尝试是什么 - 我认为可能是设置工具栏并且它的标题有计时问题所以我在3秒后添加了tabsFragment然后它工作正常,在TabsFragment上显示向上箭头。因此,看起来Actionbar或DrawerLayout和ActionbarDrawerToggle的方法不是可重入的方法,必须进行同步。我不确定。

有任何线索吗?

0 个答案:

没有答案