【问题标题】:How do I read the string from a Spinner selected event如何从 Spinner 选择的事件中读取字符串
【发布时间】:2012-08-25 00:48:42
【问题描述】:

我有一个简单的应用程序,用户在其中选择美国的一个州,所选的州将用于列出该州的所有县。在 onCreate 中,我构建了一个名为 Stateadapter 的数组适配器,并将其设置为微调器对象“spinState”。然后我初始化了一个监听器类 StateOnItemSelectedListener。在 onCreate 之外,我有 StateOnItemSelectedListener 类,它将读取在微调器中选择了哪个状态,然后执行应用程序的其余任务。

我有两个问题:在调试模式下单步执行代码时,“parent.getItemAtPosition(pos).toString”不返回所选状态的字符串值(尽管许多网络示例表明这应该可以工作)。

其次,在运行时,应用程序会在通过 onCreate 时触发侦听器,并且一切正常,直到用户在 ui 上选择微调器,然后应用程序会强制关闭。

@Override
public void onCreate(Bundle savedInstanceState)
{       
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);

    spinState = (Spinner)this.findViewById(R.id.spinState); 

    ArrayAdapter<String> Stateadapter = new ArrayAdapter<String>                        (this,android.R.layout.simple_spinner_item, array_spinState);
    Stateadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
    spinState.setAdapter(Stateadapter);   

    spinState.setOnItemSelectedListener(new StateOnItemSelectedListener());

}   

public class StateOnItemSelectedListener implements OnItemSelectedListener
{   
    public void onItemSelected(AdapterView<?> parent, View itemSelected,  int pos, long         id) 
    {   State = spinState.getItemAtPosition(pos).toString();
        //Do Stuff base on State;
    }

    public void onNothingSelected(AdapterView<?> parent)
    {   //Do nothing here 
    } 
}

【问题讨论】:

  • 你得到 logcat 的错误是什么?
  • 12-11 16:24:47.040:I/global(664):BufferedReader 构造函数中使用的默认缓冲区大小。如果需要 8k 字符的缓冲区,最好是明确的。 12-11 16:24:52.279: D/AndroidRuntime(664): 关闭 VM 12-11 16:24:52.279: W/dalvikvm(664): threadid=1: 线程退出但未捕获异常 (group=0x4001d800) 12 -11 16:24:52.309: E/AndroidRuntime(664): 致命异常: main 12-11 16:24:52.309: E/AndroidRuntime(664): java.lang.NullPointerException 12-11 16:24:52.309: E /AndroidRuntime(664):在 android.widget.ArrayAdapter.createViewFromResource

标签: android spinner


【解决方案1】:

尝试做他们在Spinner Tutorial 中所做的事情,他们以不同的方式创建适配器,但最终他们使用相同的代码来访问选定的项目并且它可以工作。

强制关闭导致 log cat 出现什么错误,getItemAtPosition 返回什么?

【讨论】:

  • 状态 = spinState.getItemAtPosition(pos).toString();返回“字符串 com.myApp.Main.State
  • 抱歉我遗漏了声明...State 是一个字符串变量 - String State;
  • 这很奇怪...试试spinState.getItemAtPosition(pos).getClass(),你收到的对象是什么类?
猜你喜欢
  • 1970-01-01
  • 2015-10-21
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多