大佬教程收集整理的这篇文章主要介绍了android中的onCreateOptionsMenu()片段不替换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().我只是不明白为什么操作栏保留其初始菜单项并且不替换它们.我错过了什么?
谢谢你的帮助.
以上是大佬教程为你收集整理的android中的onCreateOptionsMenu()片段不替换ActionBar菜单全部内容,希望文章能够帮你解决android中的onCreateOptionsMenu()片段不替换ActionBar菜单所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。