我正在使用AndroID Studio中提供的导航栏模板.
我有三个层次:
> MainActivity与导航抽屉,由Home和Profile项目组成
> UserFragment标题为“配置文件”,该选项可以显示EditUserFragment
> EditUserFragment(下级片段)由UserFragment触发
主要活动
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); drawerLayout = (DrawerLayout) findVIEwByID(R.ID.drawer_layout); drawerToggle = new ActionbarDrawerToggle(this,drawerLayout,R.drawable.ic_launcher,R.string.navigation_drawer_open,R.string.navigation_drawer_close);}@OverrIDepublic voID onBackpressed() { super.onBackpressed(); // this won't change the drawer indicator back drawerToggle.setDrawerIndicatorEnabled(true); // this works drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);}public voID onSectionAttached(int number) { // Show the corresponding Title on the action bar when clicked and open corresponding // fragments. Fragment fragment = null; switch (number) { case 1: mTitle = getString(R.string.Title_home); break; case 2: mTitle = getString(R.string.Title_profile); fragment = new UserFragment(); break; } if (fragment != null) { FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.ID.container,fragment).commit(); }}@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) { if (!mNavigationDrawerFragment.isDraweropen()) { // Only show items in the action bar relevant to this screen // if the drawer is not showing. Otherwise,let the drawer // decIDe what to show in the action bar. getMenuInflater().inflate(R.menu.main,menu); restoreActionbar(); return true; } return super.onCreateOptionsMenu(menu);}public voID restoreActionbar() { Actionbar actionbar = getActionbar(); actionbar.setNavigationMode(Actionbar.NAVIGATION_MODE_STANDARD); actionbar.setTitle(mTitle);}public voID setActionbarTitle(String Title){ getActionbar().setTitle(Title); Log.d("Title 2",getActionbar().getTitle().toString());}
当我按下手机按钮( *** 作栏上没有按钮)时,onBackpressed正在部分工作(在代码中注释).
UserFragment
@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) { setHasOptionsMenu(true); // Inflate the layout for this fragment VIEw vIEw = inflater.inflate(R.layout.fragment_profile,container,false); drawerLayout = (DrawerLayout) getActivity().findVIEwByID(R.ID.drawer_layout); drawerToggle = new ActionbarDrawerToggle(getActivity(),R.string.navigation_drawer_close); return vIEw;}@OverrIDepublic boolean onoptionsItemSelected(MenuItem item) { int ID = item.getItemID(); switch (ID) { case R.ID.action_edit: drawerToggle.setDrawerIndicatorEnabled(false); // disable slIDing from edge to open drawer drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); getFragmentManager().beginTransaction() .replace(R.ID.container,new EditUserFragment()) .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) .addToBackStack(null) .commit(); return true; default: return super.onoptionsItemSelected(item); }}
EditUserFragment
@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); getActivity().getActionbar().setdisplayHomeAsUpEnabled(true); ((MainActivity) getActivity()).setActionbarTitle("Edit Profile"); Log.d("Title",getActivity().getActionbar().getTitle().toString());}@OverrIDepublic boolean onoptionsItemSelected(MenuItem item) { // Get item selected and deal with it Log.d("KEY: ",String.valueOf(item.getItemID())); switch (item.getItemID()) { case androID.R.ID.home: Log.d("EditUserFragment","I'm here"); getActivity().onBackpressed(); return true; default: return super.onoptionsItemSelected(item); }}
.getActivity()getActionbar()setdisplayHomeAsUpEnabled(真).按照预期的方式工作,而不是抽屉;虽然点击它,它开放抽屉,而不是回到以前的片段.另外,case androID.R.ID.home中的代码从不执行.
并且我尝试从“配置文件”将 *** 作栏标题设置为“编辑配置文件”.日志显示我“编辑个人资料”,但由于某些原因,实际运行的应用程序会显示“配置文件”.
我想要实现的是可以通过点击up指示器从EditUserFragment返回到UserFragment(现在up指示器打开导航栏).并在EditUserFragment中显示正确的标题.
任何帮助是极大的赞赏!!
解决方法 经过几天的分析,我发现问题是我在创建时正在使用内置的导航抽屉活动.内置的将任务分成两部分. MainActivity和NavigationDrawerFragment.因此,我在MainActivity中的drawerToggle与NavigationDrawerFragment中的实际不一样.主角,MainActivty调用NavigationDrawerFragment来设置导航栏所需的所有内容.我通过在MainActivity中实现导航抽屉来解决这个问题,所以我只有一个drawerToggle.虽然如果我在NavigationDrawerFragment中有所有的东西(导航栏的变量),而不是MainActivity,我仍然找不到办法让它工作.如果有人知道答案,请随意留言!
总结以上是内存溢出为你收集整理的Android导航栏显示较低级别片段的指示符全部内容,希望文章能够帮你解决Android导航栏显示较低级别片段的指示符所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)