如何在android中单击按钮打开自定义菜单(它不是按钮的上下文菜单)?

如何在android中单击按钮打开自定义菜单(它不是按钮的上下文菜单)?,android,Android,我希望通过单击btnDelete按钮来显示自定义菜单deleterecord.xml。它不是btnDelete的上下文菜单,打开上下文菜单需要长时间单击,因此不能使用registerForContextMenu执行此操作 我已经使用openOptionsMenu()打开了选项菜单,同时我单击了btnMore按钮,我希望单击btnDelete按钮打开另一个自定义菜单(菜单文件是deleterecord.xml),怎么办?谢谢 private void SetButtons() {

我希望通过单击btnDelete按钮来显示自定义菜单deleterecord.xml。它不是btnDelete的上下文菜单,打开上下文菜单需要长时间单击,因此不能使用
registerForContextMenu
执行此操作

我已经使用openOptionsMenu()打开了选项菜单,同时我单击了btnMore按钮,我希望单击btnDelete按钮打开另一个自定义菜单(菜单文件是deleterecord.xml),怎么办?谢谢

 private void SetButtons() {       
    findViewById(R.id.btnMore).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openOptionsMenu();
        }
    });

   findViewById(R.id.btnDelete).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           //How to open deleterecord.xml menu
        }
    });
 }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_more, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {    

    switch (item.getItemId()) {
        case R.id.MoreShare:                
            return true;
        case R.id.MoreSettings:
            return true;
        case R.id.MoreAbout:               
            return true;
    }
    return super.onOptionsItemSelected(item);
}
这是选项菜单\u more.xml文件

<?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="info.dodata.unlock.UnlockMain" >

        <item android:id="@+id/MoreShare"
           android:title="@string/MoreShare" />  

        <item android:id="@+id/MoreUninstall"
           android:title="@string/MoreUninstall" />    

        <item android:id="@+id/MoreAbout"
           android:title="@string/MoreAbout" /> 

    </menu>

这是我的自定义菜单deleterecord.xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/ContextDeleteLess"
        android:title="Delete 10 records" />

    <item android:id="@+id/ContextDeleteMore"
        android:title="Delete 20 records"/>

</menu>


您可以在按钮下的xml布局中设置一个按钮onClick by android:onClick=“methodName”。此方法应该在views类中,并且应该有一个View参数。您可以使用它来确定视图是打开一个菜单还是另一个菜单。如果不是按钮视图,请确保设置android:clickable=“true”。

这是另一个菜单吗?它是带有菜单选项的对话框吗?
但是,如果要显示带有选项的对话框,可以按如下方式执行:

findviewbyd(R.id.btnAnoter).setOnClickListener(新视图.OnClickListener(){

@凌驾

公共void onClick(视图v){

}

}))

您需要将菜单引用存储在全局变量中,然后单击按钮再次充气菜单。以下是相同的代码:

public class MainActivity extends Activity {

private Menu menu;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button1 = (Button) findViewById(R.id.button1);
    Button button2 = (Button) findViewById(R.id.button2);
    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            openMenu1();
        }
    });

    button2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            openMenu2();
        }
    });
}

private void openMenu1() {
    menu.clear();
    getMenuInflater().inflate(R.menu.main, menu);
    openOptionsMenu();
}

private void openMenu2() {
    menu.clear();
    getMenuInflater().inflate(R.menu.main1, menu);
    openOptionsMenu();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    this.menu = menu;
    menu.clear();
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

您可以创建一个菜单布局,并尝试将其作为弹出窗口打开

findViewById(R.id.btnAnoter).setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    Intent popup=new Intent(getBaseContext(),Islemler.class);
    popup.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(popup);
  }
});

这就是我如何创建自定义菜单窗口的方法。

另一个菜单与选项菜单类似,我希望另一个菜单的UI与选项菜单类似,我单击一个按钮来显示它。请查看我的问题好吗?我修改了它,使它更清晰。谢谢让我解释一下。你有两个按钮:“btn_more”和“btn_delete”。你想在点击这两个按钮时打开两个不同的选项菜单和不同的菜单项??是的!我想打开两个不同的选项菜单,当我点击“btn_更多”和“btn_删除”我有测试你的代码,如果我点击按钮1,然后点击按钮2打开选项菜单是可以的,但是如果我先点击按钮2,应用程序会崩溃
findViewById(R.id.btnAnoter).setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    Intent popup=new Intent(getBaseContext(),Islemler.class);
    popup.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(popup);
  }
});