【发布时间】: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