2013-10-19 58 views
0

我需要的是,每個複選框具有自己的值樣1,2或3,和U可以僅檢查第一3個複選框(CB1,CB2,CB3)的1,和只1第二個3個複選框(cb4,cb5,cb6)。但最重要的是獲得對哪些複選框進行摘要的總結。 應用程序崩潰了,我做錯了什麼? p.s.請原諒我的英語不好 下面是完整的源代碼:的Android轉換整數串和串到整數

public class MainActivity extends Activity { 
    LinearLayout layout; 
    Button bt; 
    CheckBox cb1, cb2, cb3, cb4, cb5, cb6; 
    TextView tv; 
    String a, b, c; 
    int d, e, f, g, h, i; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     layout = new LinearLayout(this); 
     layout.setOrientation(LinearLayout.VERTICAL); 
     cb1 = new CheckBox(this); 
     cb2 = new CheckBox(this); 
     cb3 = new CheckBox(this); 
     cb4 = new CheckBox(this); 
     cb5 = new CheckBox(this); 
     cb6 = new CheckBox(this); 
     bt = new Button(this); 
     tv = new TextView(this); 
     bt.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       a = ""; 
       b = ""; 
       c = ""; 
       d = 1; 
       e = 2; 
       f = 3; 
       if (cb1.isChecked()){ 
        a = Integer.toString(d); 
       }else if (cb2.isChecked()){ 
        a = Integer.toString(e); 
       }else if (cb3.isChecked()){ 
        a = Integer.toString(f); 
       }else if (cb4.isChecked()){ 
        b = Integer.toString(d); 
       }else if (cb5.isChecked()){ 
        b = Integer.toString(e); 
       }else if (cb6.isChecked()){ 
        b = Integer.toString(f); 
       } 
       g = Integer.valueOf(a); 
       h = Integer.valueOf(b); 
       i = g+h; 
       c = Integer.toString(i); 
       tv.setText(c); 
      } 
     }); 
     layout.addView(cb1); 
     layout.addView(cb2); 
     layout.addView(cb3); 
     layout.addView(cb4); 
     layout.addView(cb5); 
     layout.addView(cb6); 
     layout.addView(bt); 
     layout.addView(tv); 
     setContentView(layout); 

    } 
} 

10-20 00:13:15.580: W/dalvikvm(2826): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
10-20 00:13:15.700: E/AndroidRuntime(2826): FATAL EXCEPTION: main 
10-20 00:13:15.700: E/AndroidRuntime(2826): java.lang.NullPointerException 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at com.example.test.MainActivity$1.onClick(MainActivity.java:58) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at android.view.View.performClick(View.java:4204) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at android.view.View$PerformClick.run(View.java:17355) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at android.os.Handler.handleCallback(Handler.java:725) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at android.os.Looper.loop(Looper.java:137) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
10-20 00:13:15.700: E/AndroidRuntime(2826):  at dalvik.system.NativeStart.main(Native Method) 
+2

什麼是你得到的錯誤? –

+0

java.lang.NumberFormatException:無效的int:「」 – DirectX

回答

2

這些行:

g = Integer.valueOf(a); 
h = Integer.valueOf(b); 

會給你一個錯誤其中之一,因爲無論ab將始終等於"",你不能在一個空String使用Integer.valueOf(String)

爲了解決這個問題,使用下面的代碼,而不是那些行:

if (!a.equals("")) 
    g = Integer.valueOf(a); 
else 
    g = 0; 

if (!b.equals("")) 
    h = Integer.valueOf(b); 
else 
    h = 0; 
+0

你22秒快速... :-) – cybergen

+0

不是真的... ;-) – cybergen

+0

仍然沒有工作。現在崩潰java.lang.NullPointerException – DirectX

1

如果沒有您的複選框被檢查,ab""(空字符串)。 所以g = Integer.valueOf(a);h = Integer.valueOf(b);一定會失敗。

+0

是的,但是當我檢查cb1和cb4時,我必須等於2,並且我得到一個錯誤。 – DirectX

+0

由於CheckBoxes是以'unchecked'狀態初始化的,因此您應該不會使用您的代碼。 – cybergen