Android菜单选项操作

时间:2015-04-13 06:41:07

标签: android android-menu

我了解如何在Android中创建菜单。但是他们为每个菜单项执行的操作呢?我是否必须在每项活动中指定它们?或者有“Android”方式吗?我的意思是我们可以创建一个类,只是引用那个类,因为它是Java,但正在考虑“Android”的方式。

为了更清楚,我在res / menu文件夹中创建一个菜单,让我们说标准_menu.xml,一切看起来都不错,但是没有附带的java类文件。

编辑: 好吧我觉得我不太清楚。我想说的是。我应该为每个使用此菜单的EERY和EVERY活动中的每个菜单项指定这些操作吗?

3 个答案:

答案 0 :(得分:0)

尝试这些。在您的活动中实施这些方法

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.your menu item id) {
           //do some action
        }
        return super.onOptionsItemSelected(item);
    }

答案 1 :(得分:0)

以下是您必须在“活动”中覆盖的两个功能:

@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_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

您将在每个活动中覆盖这些内容。

答案 2 :(得分:0)

每个活动类都有方法onCreateOptionsMenu。如果你想要更多的同一个菜单,那么只需要编写一些inflant()方法就可以了解它。覆盖你可以做的是从同一个类调用你自己的方法。就是这样。

适用于Activity1

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    return MyClass.myMenuClick(item);
}

for Activity2

//same
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    return MyClass.myMenuClick(item);
}

MyClass {...
    public static boolean myMenuClick(MenuItem item){
            int id = item.getItemId();

        if (id == R.id.your menu item id) {
        //do some action
        }
        return super.onOptionsItemSelected(item);

    }
}

注意 我的班级可以是任何东西。如果你想创建外部public类,那么它也不会有任何问题。但如果它可以成为内部阶级,那么这是一种很好的做法 或者只是在MainActivity

中制作公开静态方法