3

当我创建一个新项目时,我使用了Navigation Drawer Activity 应用程序屏幕

现在,当我单击每个菜单项时,它都会通过调用方法名称替换来打开一个片段。

    public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            int id = item.getItemId();

            if (id == R.id.nav_home) {
                replaceFragment(0);
                setTit = "Your State Info.";
                setTitle(setTit);
 } else if (id == R.id.nav_flashcards) {

            replaceFragment(1);
            setTit = "Flash Cards";
            setTitle(setTit);

在片段1中,我有一个放射线群时,当检查更改将打开片段,取决于所检查的无线电。

 @Override
    public void onCheckedChanged(RadioGroup radioGroup, int i) {

        RadioButton radioButton = (RadioButton)getActivity().findViewById(i);

            if(radioButton.getTag()==1)
        ((MainActivity) getActivity()).replaceFragment(0);
           else if ((radioButton.getTag()==2))
             ((MainActivity) getActivity()).replaceFragment(2);
    }

该应用程序工作正常,但问题是如何更改选定的导航项并更改操作栏的标题。

可以这样使用

 ((MainActivity) getActivity()).onNavigationItemSelected(menuitem);

但是从片段中,我如何访问menu>activity_main_drawer.xml中的项目并将其传递给 menuitem

4

4 回答 4

5

这对我有用..

NavigationView navigationView = (NavigationView) getActivity().findViewById(R.id.nav_view);
        navigationView.getMenu().getItem(2).setChecked(true); 
于 2016-12-03T17:18:03.880 回答
0

如果你使用 Navegation 抽屉,你可以使用这段代码,把它放在 onCreate 方法上:

NavigationView navigationView = (NavigationView) getActivity().findViewById(R.id.nav_view);
        navigationView.getMenu().getItem(2).setChecked(true); 
于 2019-11-03T04:30:18.343 回答
0

问题不清楚。navigation drawerwith的全部意义在于fragments通过一个主要活动访问所有片段中的导航及其主工具栏。(图像中的蓝色,您应该能够在加载片段时随时更改它)

但是您需要使frame片段的 /parent 视图破坏工具栏视图(这就是为什么通常它带有两个XMLs,activtyMain.xml并且contentMain.xml 内容 main 包含在工具栏下方的位置)所以您为此activityMain.XML创建片段视图,您可以看到您在该视图中添加的每个片段都可以访问工具栏,因为它位于添加片段的主要活动中。match_parentcontentMain.xml

所以你有一个主要的活动,在里面你有片段/s框架。无论您加载什么片段,您仍然可以访问主工具栏。

所以一旦你检查了哪个项目被点击了,navigationDrawer你就会加载与那个相关的片段吗?并在那里访问主工具栏mainActivity并执行您需要显示的更改。就是这样!

 if (id == R.id.nav_whatever) {
 // access toolBar or any view in main activity and do the changes 
// call relevant  fragment  
 }

但是您无法访问您尝试尝试的 Fragment 类中的那个toolbar或视图。mainActivity

编辑 :

在常量类或类似的东西中保留一个布尔值,然后当您单击第二个片段上的按钮时更改值。现在假设布尔值是真的然后你再次点击导航抽屉

    // keep the id as it is and use the Boolean to check where you needs to go
     if (id == R.id.nav_whatever) {
       if(boolianName){
         // boolianName is true go load second fragment
           }else{
             // load firstfragment
            }

         }
于 2016-12-03T06:50:01.973 回答
0

在您的片段中,您必须添加setOptionsMenu(true)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Add your menu entries here
    super.onCreateOptionsMenu(menu, inflater);
}
于 2016-12-03T05:54:34.603 回答