【问题标题】:Android hellospinner tutorialAndroid hellospinner 教程
【发布时间】:2011-09-26 21:29:45
【问题描述】:

我正在学习 HelloSpinner 教程,我在两个区域(onCreate 方法的第 4 行和第 6 行...我标记了它们)下得到了错误标记,但我不知道为什么?我已经使用了教程中的代码,并且没有改变他们的说明。这是我的代码...

  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>

她是我的 values 文件夹中的 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>

【问题讨论】:

  • 您遇到的具体问题是什么?我不知道您是遇到编译时问题还是运行时问题。
  • 尝试重建项目。这有时会有所帮助。或关闭/重新打开。

标签: android spinner


【解决方案1】:

R 类是基于 res/ 目录中的所有资源生成的类。 R 类应位于项目的“gen”子目录中。所以你可以戳它,看看它实际上包含什么。

以下是有关 R 类的更多详细信息: http://developer.android.com/guide/topics/resources/accessing-resources.html

另请参阅: Android - How to regenerate R class?

【讨论】:

    【解决方案2】:

    以上都不适合我。不知何故,我最终在 main.xml 中使用了 spinner1,我不得不更改 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);
    

    这是一个基于从 spinner1.java 中查看其他一些 api 代码的 GUESS)但是在查看了我的 main.xml 之后很明显: 微调器 android:id="@+id/spinner1"

    我遇到这个的原因是因为我在手动使用 main.xml 的元素,并在编辑 xml 之前将微调器添加到页面中。因此,系统将其命名为 spinner1。 希望这可以帮助某人避免我在这里遇到的头痛。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-16
      • 2011-10-31
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多