在我actiivty,我創建了多個複選框的項目就是這樣,其中的複選框的文字是從我的SQLite數據庫設置條件,在android系統
finaldb.open();
String[] db_data = finaldb.getdbdata(sensIds[i]);
finaldb.close();
for (int j = 0; j < db_data.length; j++) {
cb = new CheckBox(getApplicationContext());
cb.setButtonDrawable(id);
cb.setText(db_data[j]);
mainLayout.addView(cb);
}
未來現在,我想在設置條件我的按鈕,如果任何複選框被選中,activityA應該被啓動,或者在其他情況下,activityB將被啓動。 我試圖像這樣做,
if(cb.isChecked()) {
//ActivityA start
}
else {
//ActivityB start
}
但它給我IndexOutOfBoundExceptionError。任何人都可以幫助我在正確的方向嗎?
編輯: 當我刪除我的if else條件並僅與ActivityA一起使用時,代碼工作得非常好,但是當使用此if else條件時,它只考慮else條件並每次啓動ActivityB。
這裏是我的logcat報告,
10-18 15:10:33.065: E/AndroidRuntime(1138): FATAL EXCEPTION: main
10-18 15:10:33.065: E/AndroidRuntime(1138): Process: com.example.mydb, PID: 1138
10-18 15:10:33.065: E/AndroidRuntime(1138): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
10-18 15:10:33.065: E/AndroidRuntime(1138): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
10-18 15:10:33.065: E/AndroidRuntime(1138): at java.util.ArrayList.get(ArrayList.java:308)
10-18 15:10:33.065: E/AndroidRuntime(1138): at com.example.mydb.FinalActivity.onClick(FinalActivity.java:219)
10-18 15:10:33.065: E/AndroidRuntime(1138): at android.view.View.performClick(View.java:4438)
10-18 15:10:33.065: E/AndroidRuntime(1138): at android.view.View$PerformClick.run(View.java:18422)
10-18 15:10:33.065: E/AndroidRuntime(1138): at android.os.Handler.handleCallback(Handler.java:733)
10-18 15:10:33.065: E/AndroidRuntime(1138): at android.os.Handler.dispatchMessage(Handler.java:95)
10-18 15:10:33.065: E/AndroidRuntime(1138): at android.os.Looper.loop(Looper.java:136)
10-18 15:10:33.065: E/AndroidRuntime(1138): at android.app.ActivityThread.main(ActivityThread.java:5017)
10-18 15:10:33.065: E/AndroidRuntime(1138): at java.lang.reflect.Method.invokeNative(Native Method)
10-18 15:10:33.065: E/AndroidRuntime(1138): at java.lang.reflect.Method.invoke(Method.java:515)
10-18 15:10:33.065: E/AndroidRuntime(1138): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
10-18 15:10:33.065: E/AndroidRuntime(1138): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
10-18 15:10:33.065: E/AndroidRuntime(1138): at dalvik.system.NativeStart.main(Native Method)
此代碼是誤導...之間的字符串聲明和循環是你的SQL查詢,不是嗎?否則很明顯,db_data尚未初始化! – 2014-10-18 18:31:01
cb = new CheckBox(getApplicationContext());而是嘗試cb = new CheckBox(this); – 2014-10-18 18:36:18
@SuhailMehta試過了,它沒有工作 – 2014-10-18 20:44:40