2012-06-07 54 views
1

我试图显示一个Spinner列表供用户选择,然后选择绑定到另一个array。用户选择的值surfaceCode已保存供以后使用。将Spinner数组R.array.surface_option和绑定阵列R.array.surface_code对齐并保存在xml中。android:将微调器绑定到自定义列表

这是我的代码...

spinnerSurface = (Spinner) findViewById(R.id.spinnerSurface); 
ArrayAdapter<CharSequence> adapterSurface = ArrayAdapter.createFromResource(this, R.array.surface_option, android.R.layout.simple_spinner_item); 
adapterSurface.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinnerSurface.setAdapter(adapterSurface); 

spinnerSurface.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { 
     TextView tx = (TextView)v; 
     Log.i("\n\nid",String.valueOf(tx.getText())); 
     String surfaceCode = getResources().getStringArray(R.array.surface_code)[spinnerSurface.getSelectedItemPosition()]; 
    } 

    public void onNothingSelected(AdapterView<?> arg0) { 
    } 
}); 

Log.d("code outside", surfaceCode.trim() + " is equal to SW: " + surfaceCode.trim().equals("SW")); 

surfaceCode出来的错误process stopped unexpectedly,可能是因为它返回null。我的代码有什么问题?

+0

logcat说什么?抛出什么异常?请将Stacktrace添加到您的问题中。 –

回答

1

surfaceCode在最后一个代码行中可以为null,因为匿名侦听器中的代码仅在进行选择时才会执行。

这会在最后一行中导致NullPointerException。

即使调用了onItemSelected(),也不会设置成员surfaceCode,因为您已声明了一个局部变量,该变量具有相同的名称并将其映射到该对象上。

您应该删除surfaceCode之前的“String”,并将log语句放入onItemSelected()中。