Android hellospinner учебник - PullRequest
       2

Android hellospinner учебник

0 голосов
/ 27 сентября 2011

Я делаю учебник HelloSpinner и получаю маркеры ошибок в двух областях (строки 4 и 6 метода onCreate ... я их пометил), и я не могу понять, почему?Я использовал код из учебника, и я не изменился от их инструкций.Вот мой код ...

  package com.android.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 Activity1 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*(<-this is an error).spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, (*R.array*(<-this is an error).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.
    }
}
   }////end of class Activity1

вот мой файл 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>

, а она - мой файл 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>

Ответы [ 2 ]

0 голосов
/ 08 мая 2012

Ничто из вышеперечисленного не сработало для меня. Каким-то образом я получил spinner1 в своем main.xml, и мне пришлось изменить код Java, чтобы использовать это имя.

Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
    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);
    spinner1.setAdapter(adapter);

Это был GUESS, основанный на просмотре некоторого другого кода API от spinner1.java), но после просмотра моего main.xml это было очевидно: волчок андроид: идентификатор = "@ + идентификатор / Spinner1"

Причина, по которой я столкнулся с этим, заключается в том, что я играл с элементами main.xml вручную и добавил спиннер на страницу перед редактированием xml. Следовательно, система называет это spinner1. Надеюсь, это поможет кому-то избежать головной боли, с которой я здесь столкнулся.

0 голосов
/ 27 сентября 2011

Класс R - это сгенерированный класс, основанный на всех ресурсах в вашем каталоге res /.Класс R должен находиться в подкаталоге gen вашего проекта.Таким образом, вы можете ткнуть в него и посмотреть, что он на самом деле содержит.

Вот более подробная информация о классе R: http://developer.android.com/guide/topics/resources/accessing-resources.html

См. Также: Android - Как восстановить класс R?

...