ActionBar(ToolBar) - BackView应由SearchView和ActionMode使用

时间:2014-11-26 11:55:54

标签: android android-actionbar toolbar searchview actionmode

有没有一个好方法来处理这个问题?或者我是否真的需要手动跟踪打开的搜索视图和主动操作模式?

目前,我在我的基础活动中实现了它,但是这总是需要一些简短的代码块来注册一个活动动作模式或一个可见的搜索视图...它完美地工作,但我认为,那里可能是一个更好的解决方案...

有更好的方法吗?

是的,我正在使用AppCompat ......以前,这些都不需要特殊处理......

public abstract class BaseActivity
{
    // ----------------
    // manually register opened search view
    // or active action mode
    // ----------------

    public void registerActiveActionMode(ActionMode mode)
    {
        mActiveActionMode = mode;
    }

    public void registerCollapsableMenuItem(MenuItem menuItem)
    {
        mCollapsableMenuItem = menuItem;
    }

    // ------------------
    // delegate backpress...
    // ------------------

    protected boolean checkBackPressConsumed()
    {
        if (closeDrawer())
            return true;

        if (closeActionMode())
            return true;

        if (closeCollapsableMenuItem())
            return true;

        return false;
    }

    // ------------------------
    // back press handler with delegation, if necessary...
    // ------------------------

    @Override
    public void onBackPressed()
    {
        if (checkBackPressConsumed())
            return;

        super.onBackPressed();
    }

    // -------------------------
    // helper functions
    // -------------------------    

    public boolean closeDrawer()
    {
        if (mNavigationDrawerFragment != null)
        {
            if (isDrawerOpen())
            {
                mNavigationDrawerFragment.closeDrawer();
                return true;
            }
        }
        return false;
    }

    public boolean closeActionMode()
    {
        if (mActiveActionMode != null)
        {
            mActiveActionMode.finish();
            mActiveActionMode = null;
            return true;
        }
        return false;
    }

    public boolean closeCollapsableMenuItem()
    {
        if (mCollapsableMenuItem != null)
        {
            MenuItemCompat.collapseActionView(mCollapsableMenuItem);
            mCollapsableMenuItem = null;
            return true;
        }
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

我使用AppCompat工具栏,而我的SearchView正在消耗我的背压。

正如Android开发者博客所说;

  

"您的所有活动必须从ActionBarActivity"

延伸

link:http://android-developers.blogspot.se/2014/10/appcompat-v21-material-design-for-pre.html

我认为你的BaseActivity没有扩展ActionBarActivity,也许这将解决你的问题。