所有人都注意:这可能是一个重复的问题,但是我找不到一个实际上帮助我的答案的问题所以我被迫做了这个。
我正在阅读有关如何制作Android应用程序的教程,我对此部分感到困惑:https://developer.android.com/training/basics/actionbar/adding-buttons.html
我坚持“回应动作按钮”,因为此代码中的action_search cannot be resolved or is not a field
:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_search:
openSearch();
return true;
case R.id.action_settings:
openSettings();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void openSearch(){
}
public void openSettings(){
}
这一行
case R.id.action_search:
这阻碍了我的学习进度,我想知道如何解决它。对我而言,这似乎是Android上教学不好的教程,但它也可能是我的错。谢谢!
编辑:我的XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="ifRoom" />
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never" />
</menu>
答案 0 :(得分:4)
刚出现这个问题。教程没有提到这两个步骤。
如果您还没有,请执行以下操作:
在strings.xml中创建名为action_search的字符串
<string name="action_search">Search</string>
main_activity_actions.xml无法找到这两件事,也没有将action_search添加到R.java文件中,但是没有给出有用的错误指向那个方向。
祝你好运!编辑:还要确保你使用的是app:showAsAction。 As explained here.
答案 1 :(得分:1)
你正在使用什么IDE,如果它是NetBeans,删除包含R.id.action_search的行并构建你的项目,然后添加这一行,如果你使用的是Android Studion,我认为它需要工作,但是不要导入R从android,从你的项目主程序包导入它,我认为问题是在你定义你的活动的包中
答案 2 :(得分:1)
上述答案(dmarsi)100%正确。
Android开发者教程提到了以下内容:
http://developer.android.com/training/basics/actionbar/adding-buttons.html
图标属性需要图像的资源ID。 @ drawable /后面的名称必须是您在项目的res / drawable /目录中保存的位图图像的名称。例如,&#34; @ drawable / ic_action_search&#34;指的是ic_action_search.png。同样,title属性使用由项目的res / values /目录中的XML文件定义的字符串资源,如构建简单用户界面中所述。
我一直在努力解决同样的问题,直到我创建了字符串并为ic_action_search.png添加了一个随机的.png图像
祝教程其余部分好运!