2012-07-01 40 views
0

我試圖用吐司來測試我的微調器的功能。我有麻煩,因爲不是敬酒ShowTime,而是強制關閉。我的logcat發佈在代碼下面。如果有人可以幫我閱讀我的logcat代碼並找出什麼是錯的。提前致謝!Spinner force closing

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. 
       } 
      }); 
     } 

我的logcat

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

這與您的問題沒有直接關係,但GetTime.equals(Log_Array [0]);'onItemSelected()'方法中的行是什麼意思?看起來你正在測試平等,然後不理會回報。 – gobernador

回答

2

吐司具有是一個指向一個字符串資源的便捷方法,它允許你傳遞它的資源ID(整數)。

所以這行代碼:

Toast.makeText(getApplicationContext(), ShowTime,Toast.LENGTH_LONG).show(); 

告訴程序敬酒,並與字符串資源的整數ShowTime對於ID填充它。在你的項目中,String資源不存在,所以你得到這個異常。

要解決您需要使用makeText()方法,該方法將String作爲第二個參數,而不是int。就像這樣:

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

另外請注意,您的活動背景下,所以你應該使用,而不是getApplicationContext()方法this(您的活動)。而且因爲你是一個監聽對象的聲明裏面,你需要把你的活動的名稱盈this

編輯的:我也建議你不要命名活動「微調」。由於有一個名爲Spinner的UI組件對象,因此添加了一個connfusion級別。如果我是你,我會重構它並將活動的名稱更改爲SpinnerActivity。

+0

非常感謝! –