Android无法启动活动CompenentInfo无效索引9,大小为9

时间:2019-04-25 17:03:10

标签: java android logging

我要去其他活动。但是我得到了错误。应用程序已停止。

日志:

E/AndroidRuntime( 5551): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.x_ren.dnm/com.example.x_ren.dnm.gosterim}: java.lang.IndexOutOfBoundsException: Invalid index 9, size is 9

E/AndroidRuntime( 5551):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)

E/AndroidRuntime( 5551):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)

E/AndroidRuntime( 5551):    at android.app.ActivityThread.access$800(ActivityThread.java:151)

E/AndroidRuntime( 5551):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)

E/AndroidRuntime( 5551):    at android.os.Handler.dispatchMessage(Handler.java:102)

E/AndroidRuntime( 5551):    at android.os.Looper.loop(Looper.java:135)

E/AndroidRuntime( 5551):    at android.app.ActivityThread.main(ActivityThread.java:5254)

E/AndroidRuntime( 5551):    at java.lang.reflect.Method.invoke(Native Method)

E/AndroidRuntime( 5551):    at java.lang.reflect.Method.invoke(Method.java:372)

E/AndroidRuntime( 5551):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)

E/AndroidRuntime( 5551):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

E/AndroidRuntime( 5551): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 9, size is 9

E/AndroidRuntime( 5551):    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)

E/AndroidRuntime( 5551):    at java.util.ArrayList.get(ArrayList.java:308)

E/AndroidRuntime( 5551):    at com.example.x_ren.dnm.gosterim.onCreate(gosterim.java:96)

E/AndroidRuntime( 5551):    at android.app.Activity.performCreate(Activity.java:5990)

E/AndroidRuntime( 5551):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)

E/AndroidRuntime( 5551):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)

主要活动(转到其他活动-意图活动):

gosterimbtn.setOnClickListener ( new View.OnClickListener () {
            public void onClick (View gosterimv){

                startActivity(new Intent(MainActivity.this, gosterim.class));

            }
        });

其他活动:

resimb1 = (ImageButton)findViewById(R.id.bulmacaresim1);
        resimb2 = (ImageButton)findViewById(R.id.bulmacaresim2);
        resimb3 = (ImageButton)findViewById(R.id.bulmacaresim3);
        resimb4 = (ImageButton)findViewById(R.id.bulmacaresim4);

        bulmacat = (TextView)findViewById(R.id.bulmacasorut);

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

        resimsayi.add(1);
        resimsayi.add(2);
        resimsayi.add(3);
        resimsayi.add(4);
        resimsayi.add(5);
        resimsayi.add(6);
        resimsayi.add(7);
        resimsayi.add(8);
        resimsayi.add(9);

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

        resimler.add(R.drawable.ari);
        resimler.add(R.drawable.aslan);
        resimler.add(R.drawable.ayi);
        resimler.add(R.drawable.fil);
        resimler.add(R.drawable.kedi);
        resimler.add(R.drawable.kopek);
        resimler.add(R.drawable.koyun);
        resimler.add(R.drawable.maymun);
        resimler.add(R.drawable.zurafa);

        ArrayList<String> resimad = new ArrayList<String>();

        resimad.add("ari");
        resimad.add("aslan");
        resimad.add("ayi");
        resimad.add("fil");
        resimad.add("kedi");
        resimad.add("kopek");
        resimad.add("koyun");
        resimad.add("maymun");
        resimad.add("zurafa");

        Random rastgele = new Random();

        int secilen = rastgele.nextInt(resimsayi.size());
        resimsayi.remove(resimsayi.get(secilen));

        bulmacat.setText(resimad.get(resimsayi.get(secilen)));

        int resimd1 = rastgele.nextInt(resimsayi.size());
        resimsayi.remove(resimsayi.get(resimd1));
        int resimd2 = rastgele.nextInt(resimsayi.size());
        resimsayi.remove(resimsayi.get(resimd2));
        int resimd3 = rastgele.nextInt(resimsayi.size());
        resimsayi.remove(resimsayi.get(resimd3));

        resimb1.setImageResource(resimler.get(resimsayi.get(resimd1)));
        resimb2.setImageResource(resimler.get(resimsayi.get(resimd2)));
        resimb3.setImageResource(resimler.get(resimsayi.get(resimd3)));
        resimb4.setImageResource(resimler.get(resimsayi.get(secilen)));

        AlertDialog.Builder yapici = new AlertDialog.Builder(gosterim.this);
        yapici.setTitle("deneme");
        yapici.setMessage(resimsayi.get(resimd1) + " " + resimsayi.get(resimd2) + " " + resimsayi.get(resimd3) + " " + resimsayi.get(secilen) + "/n " + resimd1 + " " + resimd2 + " " + resimd3 + " " + secilen);
        yapici.show();

我会感到困惑。我得到一个随机数并删除它,因为没有得到一些数字。

希望您能理解

我需要你的帮助。

我等你的答案。

1 个答案:

答案 0 :(得分:0)

ArrayList索引以0开头,因此最后一个元素的索引将始终等于size - 1

int resimd1 = rastgele.nextInt(resimsayi.size() - 1);    
int resimd2 = rastgele.nextInt(resimsayi.size() - 1);
int resimd3 = rastgele.nextInt(resimsayi.size() - 1);