我知道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方法?如果是这样,我想把它放在哪里?
答案 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