2010-09-15 1 views
3

У меня проблемы с Android HelloViews Spinner Tutorial. Ошибка в HelloSpinner.java указывает, что «Rid не может быть разрешен» и «R.array не может быть разрешен». Ошибка в AndroidManifest.xml гласит: «Нет найденного ресурса, который соответствует указанному имени (в« метке »со значением« @ string/app_name ») и« Нет найденного ресурса, который соответствует указанному имени (в «метке» с value '@ string/app_name') ".Android HelloViews Spinner Учебник R.id и R.array не могут быть решены

Вот мой полный код:

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. 
     } 
    } 
} 

Рез/макет/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> 

Рез/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> 

Спасибо!

ответ

3

Добавьте это в strings.xml (или values.xml, как там это называется):

<string name="app_name">The Name Of Your App Goes Here</string>

+0

Это сделало трюк. Благодаря! – bgw

4

Предполагая, что вы используете Eclipse, вы пробовали очистить проект? Проект> Clean ...

+0

Я знаю, что это старый ответ, но я новичок в программировании Android (и Java), и это спасло меня от стука головой о стену, пытаясь понять, почему R.array не было работая как рекламируемая. Благодарю. +1 – Tim

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; и теперь он работает

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, но действительно разочаровывает новичка ... в конце концов, это учебник.