单击下拉菜单后如何 运行 编码?

How do I run code once a menu drop down has been clicked?

在我的 android 应用程序中,我有一个带有按钮的操作栏。当我按下按钮时,屏幕上会出现三个下拉选项。当用户按下其中一个按钮时,我希望能够 运行 代码,例如 运行 一个函数或转到另一个 activity。我的 menu.xml 是这样格式化的并且工作正常。我只是没有办法让按钮在您按下它们时执行操作。

<item
    android:id="@+id/dropMenu"
    android:title=""
    app:showAsAction="always"
    android:icon="@drawable/threedots">
    <menu>
        <item
            android:id="@+id/pastDays"
            android:title="Past Days" />
        <item
            android:id="@+id/aboutApp"
            android:title="About App" />
        <item
            android:id="@+id/setNotifications"
            android:title="Set Notifications" />
    </menu>
</item>

首先使用覆盖的方法 onCreateOptionsMenu() 来扩充您的菜单,如下所示:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu); // TODO: First param is your menu file

    return super.onCreateOptionsMenu(menu);
}

...以及单击其中一个菜单项时的功能:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.pastDays:
            // TODO: Implement functionality here

            break;
        case R.id.aboutApp:
            // TODO: Implement functionality here

            break;
        case R.id.setNotifications:
            // TODO: Implement functionality here

            break;
    }

    return super.onOptionsItemSelected(item);
}

在您的 activity 中,重写 onOptionsItemSelected() 方法如下:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId()==android.R.id.home){
        mDrawerLayout.openDrawer(GravityCompat.START);
    }
    if (item.getItemId()==R.id.pastDays){
        //Do something
    }
    if (item.getItemId()==R.id.aboutApp){
        //Do something
    }
    if (item.getItemId()==R.id.setNotifications){
        //Do something
    }

    return super.onOptionsItemSelected(item);
}