【问题标题】:android drawer's item selection from different fragmentsandroid抽屉从不同片段中选择的项目
【发布时间】:2015-01-23 14:29:16
【问题描述】:

我有一个主要活动,其中我有一个抽屉和 selectItem 过程来处理抽屉的项目选择:

public void selectItem(drawerItems position) {
        if (Utils.userId != 0) {
            switch (position) {
                case userSettings:
                    Fragment frag = new UserSettings();
                    Bundle args = new Bundle();
                    args.putSerializable("loginmode", Utils.LoginMode.lmRegistered);
                    frag.setArguments(args);
                    Utils.replaceFragment(frag);
                    break;
                case option2:
                    Utils.replaceFragment(new fragmentX());
                    break;
                case option3:
                    Utils.replaceFragment(new fragmentY());
                    break;
            }
            mCurrentSelectedPosition = position.ordinal();
            if (mCurrentSelectedPosition > 0) {
                mDrawerListView.setItemChecked(mCurrentSelectedPosition - 1, true);//user settings is not part of drawer view
                mDrawerListView.setSelection(mCurrentSelectedPosition - 1);
            } else mDrawerListView.clearChoices();
            setTitle(mDrawerItemTitles[mCurrentSelectedPosition]);
        } else {
            Toast.makeText(this, getString(R.string.no_active_user), Toast.LENGTH_LONG).show();
            mDrawerListView.clearChoices();
        }
        if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) mDrawerLayout.closeDrawer(GravityCompat.START);
    }

只要我在使用抽屉,这效果就很好,问题是,我也从片段中切换片段,所以我打电话给Utils.replaceFragment(new fragmentX());,但我错过了选择的所有其他“乐趣”一个项目(标题、项目焦点等)。

我想将 selectItem 也移动到 Utils 类,但我没有对 mDrawerItemTitles、mDrawerListView、mCurrentSelectedPosition 等的引用。我可以将它们添加到 Utils 类,但我想知道是否有更清洁、更好的方法实现我想要的。

另一种选择是公开 selectItem 并从托管片段中访问它,但我想知道是否有更好/更清洁的方法。

【问题讨论】:

    标签: android android-fragments navigation-drawer


    【解决方案1】:

    您可以使用回调来传达您的片段和主要活动。在这里你有一个很好的例子解释。

    http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity

    【讨论】:

    • 谢谢。最终我意识到我还需要从 Utils 类(不是片段)中调用其他片段,所以我使用了我提到的第二个选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多