我正在开发一个时间表应用程序,但我有一个奇怪的问题,我创建了一个弹出式菜单,单击一个操作栏项后打开。
弹出窗口可以工作,但它在操作栏中打开,我希望它在下面的视图中打开。
我的代码..

    @Override
    public void onCreateOptionsMenu(
          Menu menu, MenuInflater inflater) {
       inflater.inflate(R.menu.lists_choice_mode_mulitplue, menu);
    }
     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setHasOptionsMenu(true);

        }
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
          // Handle item selection
          switch (item.getItemId()) {
          case R.id.inverse:
              showPopupMenu(this.getView());
              return true;
          }
          return false;
    }
     private void showPopupMenu(View v){
         final Activity activity = getSupportActivity();
           PopupMenu popupMenu = new PopupMenu(activity, v);
              popupMenu.getMenuInflater().inflate(R.menu.popup, popupMenu.getMenu());

              popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

           @Override
           public boolean onMenuItemClick(MenuItem item) {
            Toast.makeText(activity,
              item.toString(),
              Toast.LENGTH_LONG).show();
            return true;
           }
          });

              popupMenu.show();
          }

我的.xml布局文件
弹出菜单.xml
 <?xml version="1.0" encoding="utf-8"?>
        <menu xmlns:android="http://schemas.android.com/apk/res/android">
          <group android:id="@+id/group_popupmenu">
              <item android:id="@+id/menu1"
                  android:title="Popup menu item 1"/>
              <item android:id="@+id/menu2"
                  android:title="Popup menu item 2"/>
              <item android:id="@+id/menu3"
                  android:title="Popup menu item 3"/>
          </group>
        </menu>

我的操作栏按钮.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/inverse"
        android:showAsAction="always|withText"
        android:title="Week"
        android:titleCondensed="Week" />
</menu>

最佳答案

是的,现在修好了!
显示弹出菜单(this.getview())是错误的;
它应该是操作栏中图标的ID。如下所示。

 @Override
         public boolean onOptionsItemSelected(MenuItem item) {
              // Handle item selection
              switch (item.getItemId()) {
              case R.id.inverse:

                  showPopupMenu(R.id.inverse);
                  return true;
              }
              return false;
        }

在中更改ShowPopupMenu(视图V)
 private void showPopupMenu(int id){

             final Activity activity = getSupportActivity();
             View v = activity.findViewById(id);
               PopupMenu popupMenu = new PopupMenu(activity, v);
                  popupMenu.getMenuInflater().inflate(R.menu.popup, popupMenu.getMenu());

                  popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

               @Override
               public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(activity,
                  item.toString(),
                  Toast.LENGTH_LONG).show();
                return true;
               }
              });


                      popupMenu.show();


              }

现在开始工作了!谢谢你的回答,这对我没有帮助,但我很感激!

关于android - 为什么要在操作栏中打开popupmenu,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17233794/

10-10 19:19