Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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
在androidstudio的fragment中实现菜单_Android_Android Fragments_Menu_Menuitem - Fatal编程技术网

在androidstudio的fragment中实现菜单

在androidstudio的fragment中实现菜单,android,android-fragments,menu,menuitem,Android,Android Fragments,Menu,Menuitem,我想在fragment类中实现菜单。片段工作正常,没有错误,但片段中没有显示菜单。我用以下方式实现这个类 public class FilesFragment extends Fragment { public FilesFragment() { // Required empty public constructor } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override

我想在fragment类中实现菜单。片段工作正常,没有错误,但片段中没有显示菜单。我用以下方式实现这个类

public class FilesFragment extends Fragment {

    public FilesFragment() {
        // Required empty public constructor
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_files, container, false);

        return view;
    }

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

    }

    @Override
    public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
        inflater.inflate(R.menu.files_menu,menu);
        super.onCreateOptionsMenu(menu, inflater);
    }
     @Override
     public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_setting){
        Toast.makeText(getActivity(),"setting clicked",Toast.LENGTH_SHORT).show();
    }
    return super.onOptionsItemSelected(item);
}

}
这是菜单文件夹中文件菜单的xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_setting"
        android:title="settings"
        app:showAsAction="never"/>
    <item
        android:id="@+id/aobut"
        android:title="About"
        app:showAsAction="never"
        />

</menu>

以上代码根本不显示菜单。如何在片段中实现菜单


您可以在任何视图中填充菜单,而无需任何复杂性。使用以下代码并享受

任何视图都可以是按钮、imageView或任何其他要在其中为该菜单充气的视图。无需在xml中添加菜单。用java就可以了

    PopupMenu popup = new PopupMenu(context, any View);
    popup.inflate(R.menu.files_menu );
    popup.setOnMenuItemClickListener(item -> {


        int id = item.getItemId();

        if (id == R.id.action_setting) {
            // do stuff
        } else if (id == R.id.aobut) {
            //

        } 


        return true;
    });
    popup.show();

谢谢你的回答。但是我有两个片段,我想在片段2中实现它,它在片段中如何实现?你能添加屏幕截图吗?这就是我想要的,不同片段的不同菜单。以上代码适用于选项卡2,其中标题工具栏显示正确,但菜单未显示。您可以在工具栏上创建包含上面菜单图标的图像视图。然后在包含工具栏的“活动”中的“图像视图”中展开菜单。当您更改碎片时,也会更改popup.inflate()函数中的菜单