2012-06-07 52 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()中。