应用因打开错误而崩溃:无法启动活动组件信息

时间:2019-05-16 10:28:54

标签: android

我只是编写了一个简单的应用程序,当我运行它时
我收到此错误

2019-05-16 15:12:46.079 6879-6879/net.perkglobal.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: net.perkglobal.myapplication, PID: 6879
    java.lang.RuntimeException: Unable to start activity ComponentInfo{net.perkglobal.myapplication/net.perkglobal.myapplication.MainActivity}: java.lang.IllegalArgumentException: Not an array: class java.util.ArrayList
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.IllegalArgumentException: Not an array: class java.util.ArrayList
        at java.lang.reflect.Array.notAnArray(Array.java:823)
        at java.lang.reflect.Array.get(Array.java:210)
        at net.perkglobal.myapplication.MainActivity.onCreate(MainActivity.java:91)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

根据该错误,第91行出现错误,因此我尝试更改它,但似乎无济于事 有人可以告诉我该怎么做

这是代码中有错误的一部分

 TextView text= findViewById(R.id.WP);
        List<String> list = new ArrayList<String>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");
        list.add("F");
        list.add("G");
        list.add("H");
        list.add("I");
        list.add("J");
        list.add("K");
        list.add("L");
        list.add("M");
        list.add("N");
        list.add("O");
        list.add("P");
        list.add("Q");
        list.add("R");
        list.add("S");
        list.add("T");
        list.add("U");
        list.add("V");
        list.add("W");
        list.add("X");
        list.add("Y");
        list.add("Z");
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("f");
        list.add("g");
        list.add("h");
        list.add("i");
        list.add("j");
        list.add("k");
        list.add("l");
        list.add("m");
        list.add("n");
        list.add("o");
        list.add("p");
        list.add("q");
        list.add("r");
        list.add("s");
        list.add("t");
        list.add("u");
        list.add("v");
        list.add("w");
        list.add("x");
        list.add("y");
        list.add("z");
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add("6");
        list.add("7");
        list.add("8");
        list.add("9");
        list.add("0");
        list.add(" ");   for (int n=0 ;n<64;n++){
        String string = Array.get(list,n).toString();
        text.setText(string);}

2 个答案:

答案 0 :(得分:1)

您使用的方法需要一个数组,例如outlined in the documentation。而且ArrayList不是数组-但SomeType[]是。老实说,当ArrayList拥有自己的get方法时,我看不出为什么要使用它。如果出于某种原因想要/需要使用该方法,则需要创建一个数组。

实际上,您有两个简单的选项,不需要手动调用ArrayList之外的任何方法:

for (int n = 0; n < list.size; n++){ // Avoid hardcoding sizes. 
    String string = list.get(i);
    <your code here>
}

或者:

for (String string : list) {
    <your code here>
}

并且如其他答案所述,您还可以使用手动迭代器方法。

但是根据您的代码,您还会遇到第二个问题:setText更改内容,而不是附加内容。这使循环毫无意义。如果您只想要最后一个(或特定索引),只需将其缩减为:

text.setText(list.get(list.size() - 1));

如果要附加文本,请使用the append method

<for loop> {
    text.append(string);
}

<for loop>是您选择的类型。

答案 1 :(得分:0)

将您的for循环更改为此

Iterator i = list.iterator();
  while (i.hasNext()) {
     Log.d("string",i.next())
    //your code goes here
  }