2011-12-12 2 views
0

사용자가 미국 주 중 하나를 선택하고 선택된 주를 그 주에있는 모든 카운티를 나열하는 데 사용하는 간단한 응용 프로그램이 있습니다. onCreate에서 StateAdapter라는 arrayadapter를 만들고 spinner 객체 "spinState"로 설정했습니다. 그런 다음 리스너 클래스 StateOnItemSelectedListener를 초기화했습니다. onCreate 밖에서, 어떤 상태가 회 전자에서 선택되었는지 읽고 나머지는 응용 프로그램의 작업을 수행하는 StateOnItemSelectedListener 클래스가 있습니다.Spinner에서 선택한 이벤트의 문자열을 읽는 방법

두 가지 문제가 있습니다. 디버그 모드에서 코드를 한 번 실행하면 "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 
    } 
} 
+0

logcat을 가져 오는 중에 발생한 오류는 무엇입니까? –

+0

12-11 16 : 24 : 47.040 : I/global (664) : BufferedReader 생성자에서 사용되는 기본 버퍼 크기입니다. 8k-char 버퍼가 필요한지를 명시하는 것이 더 낫습니다. 1211 16 : 24 : 52.279 : D/AndroidRuntime (664) : 종료 VM 12-11 16 : 24 : 52.279 : dalvikvm (664) : threadid = 1 : catch되지 않은 예외로 스레드 종료 중 (그룹 = 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 android.widget.ArrayAdapter.createViewFromResource –

답변

0

들은 Spinner Tutorial에서 할 일을 시도, 그들은 다른 방법으로 어댑터를 만들지 만, 결국은 선택된 항목에 액세스하려면 동일한 코드를 사용하고 작동합니다.

강제 종료에서 log cat의 오류는 무엇이며 어떤 getItemAtPosition으로 반환합니까?

+0

상태 = spinState.getItemAtPosition (pos) .toString(); 반환 "문자열 com.myApp.Main.State –

+0

미안 해요 선언을 ... 상태 문자열 변수입니다 - 문자열 상태, –

+0

그건 이상한 ... 'spinState.getItemAtPosition (pos) .getClass()', 받은 클래스는 어떤 클래스입니까? – Jong

관련 문제