2016-03-06 85 views
0

我試圖在android studio(java)中創建一個應用程序,但是我的複選框有點問題。每次當我取消選中複選框時,我的應用程序將崩潰。它的目的是當複選框被選中時,整數存儲在一個數組列表中,一個隨機數發生器從數組中選擇一個整數並顯示它。有人可以告訴我我做錯了什麼。當我使用複選框時,應用程序崩潰

java文件

package com.developer.sven.dartworkout20; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.CheckBox; 

import java.util.ArrayList; 

public class PreferenceDartThrow extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.preference_dart_throw_page); 

    Intent preferenceDartThrowPageOpened = getIntent(); 
    String previousActivity = preferenceDartThrowPageOpened.getExtras().getString("Pref"); 
} 

ArrayList<Integer> selection = new ArrayList<Integer>(); 

public void selectNumber(View view) { 
    boolean numberChecked = ((CheckBox) view).isChecked(); 
    switch (view.getId()) { 
     case R.id.number_D1: 
      if (numberChecked) { 
       selection.add(1); 
      } else { 
       selection.remove(1); 
      } 
      break; 

     case R.id.number_D2: 
      if (numberChecked) { 
       selection.add(2); 
      } else { 
       selection.remove(2); 
      } 
      break; 

     case R.id.number_D3: 
      if (numberChecked) { 
       selection.add(3); 
      } else { 
       selection.remove(3); 
      } 
      break; 

     case R.id.number_D4: 
      if (numberChecked) { 
       selection.add(4); 
      } else { 
       selection.remove(4); 
      } 
      break; 

     case R.id.number_D5: 
      if (numberChecked) { 
       selection.add(5); 
      } else { 
       selection.remove(5); 
      } 
      break; 
    } 
} 
} 

.XML文件

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="21dp" 
     android:id="@+id/number_D1" 
     android:onClick="selectNumber" 
     android:layout_below="@+id/text_double" 
     android:layout_centerHorizontal="true" 
     android:checked="false" /> 


    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="21dp" 
     android:id="@+id/number_D2" 
     android:onClick="selectNumber" 
     android:layout_below="@+id/number_D1" 
     android:layout_centerHorizontal="true" 
     android:checked="false" 
     android:visibility="visible" /> 


    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="21dp" 
     android:id="@+id/number_D3" 
     android:onClick="selectNumber" 
     android:layout_below="@+id/number_D2" 
     android:checked="false" 
     android:layout_centerHorizontal="true" 
     android:visibility="visible" /> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="21dp" 
     android:id="@+id/number_D4" 
     android:onClick="selectNumber" 
     android:layout_below="@+id/number_D3" 
     android:checked="false" 
     android:layout_centerHorizontal="true" 
     android:visibility="visible" /> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="21dp" 
     android:onClick="selectNumber" 
     android:layout_below="@+id/number_D4" 
     android:checked="false" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/number_D5" 
     android:visibility="visible" /> 
</RelativeLayout> 

錯誤日誌

02-27 14:15:33.540 1024-1024/com.developer.sven.dartworkout20 E/AndroidRuntime: FATAL EXCEPTION: main 
                       Process: com.developer.sven.dartworkout20, PID: 1024 
                       java.lang.IllegalStateException: Could not execute method for android:onClick 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:275) 
                        at android.view.View.performClick(View.java:4438) 
                        at android.widget.CompoundButton.performClick(CompoundButton.java:100) 
                        at android.view.View$PerformClick.run(View.java:18422) 
                        at android.os.Handler.handleCallback(Handler.java:733) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:136) 
                        at android.app.ActivityThread.main(ActivityThread.java:5017) 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:515) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                        at dalvik.system.NativeStart.main(Native Method) 
                       Caused by: java.lang.reflect.InvocationTargetException 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:515) 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270) 
                        at android.view.View.performClick(View.java:4438) 
                        at android.widget.CompoundButton.performClick(CompoundButton.java:100) 
                        at android.view.View$PerformClick.run(View.java:18422) 
                        at android.os.Handler.handleCallback(Handler.java:733) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:136) 
                        at android.app.ActivityThread.main(ActivityThread.java:5017) 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:515) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                        at dalvik.system.NativeStart.main(Native Method) 
                       Caused by: java.lang.IndexOutOfBoundsException: Invalid index 2, size is 1 
                        at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
                        at java.util.ArrayList.remove(ArrayList.java:403) 
                        at com.developer.sven.dartworkout20.PreferenceDartThrow.selectNumber(PreferenceDartThrow.java:38) 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:515) 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270) 
                        at android.view.View.performClick(View.java:4438) 
                        at android.widget.CompoundButton.performClick(CompoundButton.java:100) 
                        at android.view.View$PerformClick.run(View.java:18422) 
                        at android.os.Handler.handleCallback(Handler.java:733) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:136) 
                        at android.app.ActivityThread.main(ActivityThread.java:5017) 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:515) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                        at dalvik.system.NativeStart.main(Native Method) 

回答

0

當您使用刪除(1),,要刪除的位置的條目「 1「,而不是值爲」1「的條目。如果要刪除值爲「1」的條目,則必須先將其轉換爲對象:

selection.remove(new Integer(1)); 
相關問題