错误R.id&&当我做动作时,Theme.AppCompat.Light

时间:2013-08-23 05:10:34

标签: android console android-actionbar

当我编辑 当我编辑完成时仍然是错误。这是我的代码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')

我该怎么办? 谢谢

2 个答案:

答案 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