2

我有一个项目,如果有人点击硬件按钮菜单,会出现三个不同的选项:

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>

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

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

我创建了一个设置、信息和印象活动。现在,如果有人单击相应的菜单子项,应该可以显示它们。但我没有胶水怎么做。我知道,如何单击按钮并显示新活动:

View button = findViewById(R.id.button_pong);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent startActivity = new Intent(v.getContext(),
                        PongActivity.class);
                startActivity(startActivity);
            }
        });

它与硬件按钮相似吗?

4

2 回答 2

4

在您的活动中,覆盖onCreateOptionsMenu(). 例如:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater mnuInflater = getSupportMenuInflater();
    mnuInflater.inflate(R.menu.your_menu, menu); // your_menu IS THE MENU XML YOU HAVE CREATED
    return super.onCreateOptionsMenu(menu);
}

并运行功能(在您的情况下,启动一个活动)覆盖onOptionsItemSelected(). 例如:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case R.id.action_settings:

        // DO SOMETHING HERE

        return true;

    case R.id.action_information:

        // DO SOMETHING HERE

        return true;

    case R.id.action_impressum:

        // DO SOMETHING HERE

        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

例如,如果您需要PongActivity在用户action_settings在 Menu XML 中选择时启动,那么该块将如下所示:(此代码将onOptionsItemSelected()如上图所示

case R.id.action_settings:
    // START THE PongActivity
    Intent startActivity = new Intent(this, PongActivity.class);
    startActivity(startActivity);

    return true;
于 2013-05-05T11:43:01.950 回答
1

阅读官方文档。查找有关“处理点击事件”的内容。

正如您已经猜到的那样,该机制的工作方式有点像 onClick 处理程序,但是有一个名为 onOptionsItemSelected() 的单独方法,其中包含一个大的 switch 语句,其中每个菜单项由您的活动定义。

您的 startActivity(intent) 代码将进入适当的案例。

于 2013-05-05T11:35:34.490 回答