我遇到了Android HelloViews Spinner教程的问题。 HelloSpinner.java中的错误表明“R.id无法解析”和“R.array无法解析”。 AndroidManifest.xml中的错误指出“找不到与给定名称匹配的资源(在'label'处,值为'@ string / app_name')”和“找不到与给定名称匹配的资源”(在'label'处value'@ string / app_name')“。
这是我的完整代码:
HelloSpinner.java
package net.brianwolf.hellospinner;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
public class HelloSpinner extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Spinner spinner = (Spinner) findViewById(R.id.spinner);
android.widget.Spinner spinner = (android.widget.Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}
public class MyOnItemSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
Toast.makeText(parent.getContext(), "The planet is " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
}
RES /布局/ main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="@string/planet_prompt"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/planet_prompt"
/>
</LinearLayout>
RES / layoutvalues / strings.xml中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="planet_prompt">Choose a planet</string>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
<item>Jupiter</item>
<item>Saturn</item>
<item>Uranus</item>
<item>Neptune</item>
</string-array>
</resources>
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.brianwolf.hellospinner"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloSpinner"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
谢谢!
答案 0 :(得分:4)
假设您正在使用Eclipse,您是否尝试过清理项目?项目&gt;清洁...
答案 1 :(得分:3)
将此添加到您的strings.xml
(或values.xml
,无论其名称如何):
<string name="app_name">The Name Of Your App Goes Here</string>
答案 2 :(得分:1)
添加
<string name="app_name">The Name Of Your App Goes Here</string>
在这里不会有帮助,仍然遇到问题“R”无法解析为“setContentView(R.layout.main);”中的变量在hellospinner.java中
我点击了错误符号,它告诉我将所有“R”链接到net.brianwolf.hellospinner.R;现在它可以工作
答案 3 :(得分:1)
我在本教程中遇到了同样的问题。 MatrixFrog建议的内容最初也不适用于我,但是它让我走上了正确的道路,经过进一步的研究后,我发现问题(在教程的上下文中)是在AndroidManifest.xml文件中。这是它应该是什么样子:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hellospinner"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="12" />
<application android:icon="@drawable/icon" android:label="@string/planet_prompt">
<activity android:name=".HelloSpinnerActivity"
android:label="@string/planet_prompt">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
请注意,唯一的更改是最初引用app_name
的两个位置,现在引用planet_prompt
以匹配教程代码。这似乎是教程错过的一个小细节,可能是经验丰富的Android开发者的明显修复,但对于初学者来说真的很令人沮丧......毕竟这是一个教程。
答案 4 :(得分:1)