如何设置操作栏按钮的操作?

时间:2014-12-16 21:28:57

标签: java android

我知道java基础知识,但是,我不知道我在这里想做什么:

  @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_search:
                openSearch();
                return true;
            case R.id.action_settings:
                openSettings();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

当我按下操作栏按钮时,我想显示字符串,那么我将要做什么? 我是否必须创建openSearch和openSettings方法?如果是这样,我想把它放在哪里?

2 个答案:

答案 0 :(得分:0)

例如,您可以使用Toast。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.action_search:
            openSearch();
            Toast.makeText(getActivity(), "search!", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.action_settings:
            openSettings();
            Toast.makeText(getActivity(), "settings!", Toast.LENGTH_SHORT).show();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

答案 1 :(得分:0)

您的ActionBar按钮来自在您的活动的onCreateOptionsMenu方法中充气的菜单。

这个方法看起来应该是这样的:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

R.menu.main_activity_actions是对定义菜单的XML文件的引用。例如,这个XML可能是这样的:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="Search Button"/>
    <item android:id="@+id/action_compose"
          android:icon="@drawable/ic_action_compose"
          android:title="Compose Button" />
</menu>

请注意,每个<item>都有一个ID。

现在,当用户单击ActionBar中的按钮时,会在您的活动中调用方法``onOptionsItemSelected(MenuItem item)`。

在此方法中,您必须知道用户按下了哪个按钮。您可以使用提供的MenuItem的ID执行此操作。 在您提供的代码中,每个R.id.*实际上都是对XML中相同ID的引用。

最后,按照上面的示例,如果用户点击“搜索”按钮时应该显示Toast;我的活动中会有这个代码:

  @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_search:
                Toast.makeText(this, "Search Button Pressed !", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.action_compose:
                // do something when the user press the button Compose.
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

请务必阅读以下文章,了解ActionBar:ActionBar