0

有没有好的方法来处理这个?还是我真的必须手动跟踪打开的搜索视图和活动操作模式?

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

有没有更好的办法?

顺便说一句,我正在使用 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;
    }
}
4

1 回答 1

0

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

正如 Android 开发者博客所说;

“您的所有活动都必须从 ActionBarActivity 扩展”

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

正如我所看到的,您的 BaseActivity 没有扩展 ActionBarActivity,也许这将为您解决问题。

于 2015-04-17T11:00:43.900 回答