onOptionsItemSelected方法可以有3个项目吗?

时间:2015-01-14 14:17:26

标签: android

我正在使用Android Studio,我想知道是否有可能在"onOptionsItemSelected"方法中使用超过2项?如果是这样的话?提前谢谢。

顺便说一下,我试过添加另一个出现问题的案例

case R.id.DropDB:{
        AlertDialog.Builder builder4 = new AlertDialog.Builder(MainActivity.this);
        LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
        builder4.setTitle("DeleteMassage")
        builder4.setPositiveButton("set", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int id) {
                    msgsDB.DeleteTable();

                }
                });
            return true;

1 个答案:

答案 0 :(得分:0)

是的,您可以根据需要添加任意数量的项目。 你必须做几件事。首先,您必须创建一个将放在文件夹中的xml:res / menu,例如,您可以将其命名为myMenu.xml

在这个xml中,你用所有你的项目来创造菜单

<强> myMenu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/action_1" android:title="@string/action_1" android:icon="@drawable/action_1" android:showAsAction="ifRoom" />
    <item android:id="@+id/action_2" android:title="@string/action_2" android:orderInCategory="100" android:showAsAction="never" />
    <item android:id="@+id/action_3" android:title="@string/action_3" android:orderInCategory="100" android:showAsAction="never" />
    <item android:id="@+id/action_4" android:title="@string/action_4" android:orderInCategory="100" android:showAsAction="never" />
</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.myMenu, menu);
    return true;
}

然后您可以实施所需的所有案例,以便为您提供行动:

@Override
public boolean onOptionsItemSelected (MenuItem item) {

    switch(item.getItemId())
    {
        case R.id.action_1:
            //You code for the action1
            return true;

        case R.id.action_2:
            //You code for the action2
            return true;

        case R.id.action_3:
            //You code for the action3
            return true;

        case R.id.action_4:
            //You code for the action4
            return true;
    }

    return super.onOptionsItemSelected(item);
}