2012-07-01 6 views
0

축하연을 통해 내 스피너의 기능을 테스트하려고합니다. 나는 ShowTime을 치는 대신 강제로 종료하기 때문에 문제가 있습니다. 내 logcat 코드 아래에 게시됩니다. 아무도 내가 내 logcat 코드를 읽고 잘못된 점을 파악할 수 있다면. 미리 감사드립니다!스피너 강제 닫기

public class Spinner extends Activity { 
     Spinner bus; 
     String GetTime; 
     int ShowTime; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      final String[] Log_Array = new String[9]; 
      { 
       Log_Array[0] = "5 min"; 
       Log_Array[1] = "10 min"; 
       Log_Array[2] = "30 min"; 
       Log_Array[3] = "50 min"; 
       Log_Array[4] = "100 min"; 
       Log_Array[5] = "300 min"; 
       Log_Array[6] = "400 min"; 
       Log_Array[7] = "500 min"; 
       Log_Array[8] = "600 min"; 

       bus= (Spinner) findViewById(R.id.timer); 

       ArrayAdapter NoCoreAdapter = new ArrayAdapter(this, 
         android.R.layout.simple_spinner_item, Log_Array); 
       bus.setAdapter(NoCoreAdapter); 

       bus.setSelection(1); 
      } 

      bus.setOnItemSelectedListener(new OnItemSelectedListener() { 

       public void onItemSelected(AdapterView<?> parent, View view, 
         int pos, long id) { 

        GetTime = parent.getItemAtPosition(pos).toString(); 

        if (pos == 0) { 
         GetTime.equals(Log_Array[0]); 
         ShowTime = 5; 
        } 
        if (pos == 1) { 
         GetTime.equals(Log_Array[1]); 
         ShowTime = 5; 
        } 
        if (pos == 2) { 
         GetTime.equals(Log_Array[2]); 
         ShowTime = 5; 
        } 
        if (pos == 3) { 
         GetTime.equals(Log_Array[3]); 
         ShowTime = 5; 
        } 
        if (pos == 4) { 
         GetTime.equals(Log_Array[4]); 
         ShowTime = 5; 
        } 
        if (pos == 5) { 
         GetTime.equals(Log_Array[5]); 
         ShowTime = 5; 
        } 
        if (pos == 6) { 
         GetTime.equals(Log_Array[6]); 
         ShowTime = 5; 
        } 
        if (pos == 7) { 
         GetTime.equals(Log_Array[7]); 
         ShowTime = 5; 
        } 

        if (pos == 8) { 
         GetTime.equals(Log_Array[8]); 
         ShowTime = 6; 
        } 
        Toast.makeText(getApplicationContext(), ShowTime, 
          Toast.LENGTH_LONG).show(); 
       } 

       public void onNothingSelected(AdapterView parent) { 
        // Do nothing. 
       } 
      }); 
     } 

내 로그 캣

07-01 16:12:14.348: E/AndroidRuntime(21733): FATAL EXCEPTION: main 
07-01 16:12:14.348: E/AndroidRuntime(21733): android.content.res.Resources$NotFoundException: String resource ID #0x5 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.content.res.Resources.getText(Resources.java:210) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.widget.Toast.makeText(Toast.java:258) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at com.settings.Settings$1.onItemSelected(Settings.java:88) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.widget.AdapterView.fireOnSelected(AdapterView.java:871) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.widget.AdapterView.access$200(AdapterView.java:42) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:837) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.os.Handler.handleCallback(Handler.java:587) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.os.Looper.loop(Looper.java:143) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at android.app.ActivityThread.main(ActivityThread.java:4196) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at java.lang.reflect.Method.invokeNative(Native Method) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at java.lang.reflect.Method.invoke(Method.java:507) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-01 16:12:14.348: E/AndroidRuntime(21733): at dalvik.system.NativeStart.main(Native Method) 
+0

이것은 귀하의 질문과 직접적인 관련이 없지만,'onItemSelected()'메소드의'GetTime.equals (Log_Array [0]);'줄의 아이디어는 무엇입니까? 당신이 평등을 시험하고 그 결과를 무시하는 것 같습니다. – gobernador

답변

2

토스트는 문자열 리소스에 대한 포인터입니다 당신이 그것을 리소스 ID (정수)를 통과 할 수있는 편리한 방법이 있습니다.

때문에이 코드 줄은 :
Toast.makeText(getApplicationContext(), ShowTime,Toast.LENGTH_LONG).show(); 

는 토스트을하고 정수 ShowTime가의 ID입니다 문자열 자원과 그것을 채우기 위해 프로그램을 말하고있다. 귀하의 프로젝트에서 String 리소스가 존재하지 않으므로이 예외가 발생합니다.

문자열을 int가 아닌 두 번째 매개 변수로 사용하는 makeText() 메서드를 사용해야하는 경우 수정해야합니다. 이처럼 :

Toast.makeText(Spinner.this, String.ValueOf(ShowTime),Toast.LENGTH_LONG).show(); 

은 또한 당신의 활동 상황입니다 있습니다, 그래서 당신은 대신 getApplicationContext() 방법을 this (활동)을 사용한다. 당신이 리스너 객체 선언의 내부에 있기 때문에 그리고 당신은 this

편집의 뿅 액티비티의 이름을 넣어해야합니다 나는 또한 당신의 활동 "회 전자를"이름을하지 않는 것이 좋습니다 것입니다. Spinner라는 UI 구성 요소 객체가 있기 때문에 이것은 연결 수준을 추가합니다. 나는 그것을 리펙토링하고 내가 당신이라면 액티비티의 이름을 SpinnerActivity로 바꿀 것입니다.

+0

많은 사람 감사합니다! –

관련 문제