Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Fragment1中的菜单方法从Fragment2调用_Android_Android Fragments_Android Viewpager - Fatal编程技术网

Android Fragment1中的菜单方法从Fragment2调用

Android Fragment1中的菜单方法从Fragment2调用,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有一个MainActivity,它包含对FragmentAdapter和ViewPage的引用。 在本活动中,我将两个片段添加到列表中,然后将此列表添加到FragmentAdapter中: fragments.add(Fragment.instantiate(this, Fragment1.class.getName())); fragments.add(Fragment.instantiate(this, Fragment2.class.getName())); 现在,我成功

我有一个MainActivity,它包含对FragmentAdapter和ViewPage的引用。 在本活动中,我将两个片段添加到列表中,然后将此列表添加到FragmentAdapter中:

fragments.add(Fragment.instantiate(this, Fragment1.class.getName()));       
fragments.add(Fragment.instantiate(this, Fragment2.class.getName()));
现在,我成功地从这两个片段中穿行。事实上,它们都是列表片段。在每个片段中,我列出了许多项目

对于每个项目,我可以单击“保持”并显示一个菜单项

出现的问题是,在Fragment1中,
公共布尔值onContextItemSelected(MenuItem)
在Fragment1中被成功调用(在此片段中添加了断点)

在Fragment2中执行相同测试时,将调用Fragmg1中的断点,而不是Fragmg2中的断点。显然,Frag1的数据显示在Frag2中

有人见过这个吗

我在两个片段中实例化菜单,如下所示:

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(Menu.NONE, R.id.share, Menu.NONE, getString(R.string.share));
        menu.add(Menu.NONE, R.id.delete, Menu.NONE, getString(R.string.delete_all));
    }
问候,,
Felipe

基本上,无论哪个片段首先实例化,都将获得优先级。有关使用InvalidateOptions功能表的解决方案,请参见链接。基本上,选项菜单会一直存在,直到你告诉android它是无效的。在较旧的系统上,您可以更改OnPrepareOptions功能表中的菜单,但由于actionbar具有Options功能表中的图标,因此需要完全销毁它


因此,当您翻页到一个新片段时,只需使选项菜单无效即可。对于较旧的设备,请在PrepareOptions功能表中查看哪些片段可见并显示这些选项。

我现在注意到的是:如果我首先使用Frag1中的菜单方法,当我尝试在Frag2中使用该方法时,它会调用Frag1。如果我第一次使用Frag2中的Menu方法,当我尝试在Frag1中使用该方法时,它会调用Frag2。我想在记忆中的某个地方还保留着一些东西。它成功了!非常感谢,我不知道ActivityCompact课程。