Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android中的onCreateOptionsMenu()片段不替换ActionBar菜单大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的应用程序中使用NavigationDrawer并在单击抽屉中的项目时替换片段.我的问题是,当我更改片段时,ActionBar中的菜单项不会更新.

我已经仔细阅读了本教程https://www.grokkingandroid.com/adding-action-items-from-within-fragments/,但它仍然无法在我的应用程序中运行.

在此处添加父活动和其中一个片段的一些代码片段.
我需要的是当初始片段被ContactFormFragment.java替换时,显示联系表单片段(R.menu.contactform_send_menu)的其他菜单项.

public class MainActivity extends FragmentActivity implements ActionBar.onNavigationListener {

    @Override
    protected void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.activity_main);
        settitle(R.String.app_Name);

        // Set up the action bar to show a dropdown list.
        ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        actionBar.setDisplayShowtitleEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);

        createNavigationDrawer(savedInstanceStatE);
    }

    private final int DRAWER_MAIN = 0;
    private final int DRAWER_CONTACT = 5;

    // update the main content by replacing fragments
    private void SELEctItem(int position) {
        Fragment fragment = null;
        Bundle args = new Bundle();
        Boolean isFragment = false;

        switch (position) {
        case DRAWER_MAIN:
            fragment = new WelcomeSectionFragment();
            args.putString(WelcomeSectionFragment.ITEM_NAME,dataList.get(position).getItemname());
            args.puTint(WelcomeSectionFragment.IMAGE_resource_id,dataList.get(position).getImgResID());
            getActionBar().settitle(R.String.app_Name);
            isFragment = true;
            break;
        case DRAWER_CONTACT:
            fragment = new ContactFormFragment();
            args.putString(ContactFormFragment.ITEM_NAME,dataList.get(position).getItemname());
            args.puTint(ContactFormFragment.IMAGE_resource_id,dataList.get(position).getImgResID());
            getActionBar().settitle(R.String.contactform_titlE);
            isFragment = true;
            break;
        default:
            break;
        }

        if (isFragment) {
            fragment.setArguments(args);
            FragmentManager frgManager = getFragmentManager();
            frgManager.begintransaction().replace(R.id.content_frame,fragment).commit();

            mDrawerList.setItemchecked(position,truE);
            settitle(dataList.get(position).getItemname());
            mDrawerLayout.closeDrawer(mDrawerList);
        }
    }

}

和片段:

public class ContactFormFragment extends Fragment {

    public ContactFormFragment() {

    }

    @Override
    public void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);

        ca = getActivity();
        Reachability.registerReachability(ca.getApplicationContext());

        setTings = ca.getSharedPreferences(Konstanten.PREFERENCES_FILE,0);
        member = new Gson().fromJson(setTings.getString(Konstanten.MEMBER_OBjeCT,null),Member.class);

        latoFontLight = Tools.getFont(ca.getAssets(),"Lato-Light.ttf");
        latoFontBold = Tools.getFont(ca.getAssets(),"Lato-Bold.ttf");

        // update action bar menu items?
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) {
        // Do something that differs the Activity's menu here
        super.onCreateOptionsMenu(menu,inflater);

        menu.clear();

        if (Build.VERSION.SDK_INT >= 11) {
            // SELEctMenu(menu);
            inflater.inflate(R.menu.contactform_send_menu,menu);
        }
    }
}

调试时我可以看到setHasOptionsMenu(true);在onCreate()中调用,我也进入ContactFormFragment.java的onCreateOptionsMenu().我只是不明白为什么操作栏保留其初始菜单项并且不替换它们.我错过了什么?

谢谢你的帮助.

解决方法

尝试使用setHasOptionsMenu(true);在ChildFragment.java的onCreateView()中 我在你发布的代码中没有看到一个.

大佬总结

以上是大佬教程为你收集整理的android中的onCreateOptionsMenu()片段不替换ActionBar菜单全部内容,希望文章能够帮你解决android中的onCreateOptionsMenu()片段不替换ActionBar菜单所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。