当我编辑 当我编辑完成时仍然是错误。这是我的代码MainActivity
package com.example.actionbar;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//ถ้ามีการเลือก actionเกิดขึ้น object ที่นำมาใช้จะเรียกชื่อobject นี้ว่า onOptionItemSelected()
public boolean onOptionItemSelect(MenuItem item){
//ใช้switch case ในการกำหนดว่าเมือ เลือก action นี้เเล้วทำอะไร
switch (item.getItemId()){
case R.id.action_search:
Toast.makeText(this,"Menu search is selected", Toast.LENGTH_SHORT).show();
break;
case R.id.action_settings:
Toast.makeText(this,"Menu setting is selected", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}
}
现在我将字符串添加到string.xml
<string name="action_search">Search</string>
这是我在res / menu / main
中的代码<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:name="@string/action_search"
android:showAsAction="ifRoom"/>
这是我在清单错误处的代码(android:label =“@ string / Theme.AppCompat.Light”)。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.actionbar"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.actionbar.MainActivity"
android:label="@string/Theme.AppCompat.Light" > <<<<<<<<<<<error
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这是我在R&amp; Theme.AppCompat.Light。
R cannot be resolved to a variable
No resource found that matches the given name (at 'label' with value '@string/Theme.AppCompat.Light')
我该怎么办? 谢谢
答案 0 :(得分:2)
你忘记了+
。将此android:id="@id/action_search"
更改为此android:id="@+id/action_search"
。
并确保您已声明名称为action_search
的字符串,并在Search
文件中为其指定strings.xml
之类的值。防爆。 <string name="action_search">Search<string>
。
干杯。
答案 1 :(得分:0)
您缺少+
。将其更改为
<item android:id="@+id/action_search"
加号(+)表示这是一个必须创建并添加到我们资源的新资源名称(在R.java文件中)。
检查id @
下的主题http://developer.android.com/guide/topics/ui/declaring-layout.html
找不到与给定名称匹配的资源(在'title'处,值为'@ string / action_search')。
确保action_search
res / values / strings.xml
strings.xml
同时将其更改为android:showAsAction="ifRoom"
并删除此xmlns:yourapp="http://schemas.android.com/apk/res-auto"
您还在使用ActionBar Compact吗?如果是,请检查以下链接和修改菜单资源下的主题。
http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html