2011-12-12 86 views
0

我有一個簡單的應用程序,用戶在其中選擇美國州之一,選擇的州將用於列出該州所有縣。在onCreate中,我構建了一個名爲Stateadapter的數組適配器,並將其設置爲spinner對象「spinState」。然後我初始化了一個監聽器類StateOnItemSelectedListener。在onCreate之外,我有StateOnItemSelectedListener類,它將讀取在微調器中選擇哪個狀態,然後執行應用程序其餘任務。如何從Spinner選擇的事件中讀取字符串

我有兩個問題:當在調試模式下單步執行代碼時,「parent.getItemAtPosition(pos).toString」不會返回所選狀態的字符串值(儘管許多Web示例表明這應該起作用) 。

第二,在運行時,應用程序在通過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 
    } 
} 
+0

什麼是你得到的logcat錯誤? –

+0

12-11 16:24:47.040:I/global(664):在BufferedReader構造函數中使用的默認緩衝區大小。如果需要8k字符的緩衝區,那麼最好是明確的。 12-11 16:24:52.279 D/AndroidRuntime(664):關閉虛擬機 12-11 16:24:52.279:W/dalvikvm(664):threadid = 1:線程退出與未捕獲的異常(組= 0x4001d800 ) 12-11 16:24:52.309:E/AndroidRuntime(664):致命異常:主 12-11 16:24:52.309:E/AndroidRuntime(664):java.lang.NullPointerException 12-11 16: 24:52.309:E/AndroidRuntime(664):\t at android.widget.ArrayAdapter.createViewFromResource –

回答

0

試着做他們在Spinner Tutorial做什麼,他們創造以不同的方式轉接器,但最終他們使用相同的代碼來訪問選擇的項目和它的作品。

什麼是log cat中的錯誤從force close,什麼getItemAtPositiondoes return?

+0

State = spinState.getItemAtPosition(pos).toString();返回「String com.myApp.Main.State –

+0

對不起,我遺漏了聲明...狀態是一個字符串變量 - 字符串狀態; –

+0

這很奇怪...嘗試'spinState.getItemAtPosition(pos).getClass()',你收到的對象是什麼類? – Jong