java - 当我使用 ListView 设置字符串数组时,我会强制关闭

标签 java android arraylist arrays forceclose

我正在制作一个 ListView ,我希望它显示字符串数组中的内容。这是我的扫描仪类:

package com.rezoluz.planesim;

import java.util.ArrayList;

public class Scanner {

    public ArrayList<String> gameList;
    public String[] gameListFin;

    public void getFiles() {
        gameList.add("testo7r");
        gameList.add("test5or");
        gameList.add("te4stor");
        gameList.add("tes3tor");
        gameList.add("testo2r");
        gameListFin = gameList.toArray(new String[gameList.size()]);
    }

}

这是我的 ShortcutListActivty 类:

package com.rezoluz.planesim;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ShortcutListActivity extends Activity {

    Scanner scanner = new Scanner();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shortcuts_list);

        scanner.getFiles();
        ListView listView = (ListView)findViewById(R.id.shortcutsList);
        listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, scanner.gameListFin));
    }

}

但是当我打开 ShortcutsListActivity 时,它强制关闭,这是 logcat。

04-20 15:29:24.343: D/AndroidRuntime(17039): Shutting down VM 04-20
 15:29:24.343: W/dalvikvm(17039): threadid=1: thread exiting with
 uncaught exception (group=0x4001d7e8) 04-20 15:29:24.478:
 E/AndroidRuntime(17039): FATAL EXCEPTION: main 04-20 15:29:24.478:
 E/AndroidRuntime(17039): java.lang.RuntimeException: Unable to start
 activity
 ComponentInfo{com.rezoluz.planesim/com.rezoluz.planesim.ShortcutListActivity}:
 java.lang.NullPointerException 04-20 15:29:24.478:
 E/AndroidRuntime(17039):   at
 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
 04-20 15:29:24.478: E/AndroidRuntime(17039):   at
 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
 04-20 15:29:24.478: E/AndroidRuntime(17039):   at
 android.app.ActivityThread.access$2300(ActivityThread.java:125) 04-20
 15:29:24.478: E/AndroidRuntime(17039):     at
 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
 04-20 15:29:24.478: E/AndroidRuntime(17039):   at
 android.os.Handler.dispatchMessage(Handler.java:99) 04-20
 15:29:24.478: E/AndroidRuntime(17039):     at
 android.os.Looper.loop(Looper.java:123) 04-20 15:29:24.478:
 E/AndroidRuntime(17039):   at
 android.app.ActivityThread.main(ActivityThread.java:4627) 04-20
 15:29:24.478: E/AndroidRuntime(17039):     at
 java.lang.reflect.Method.invokeNative(Native Method) 04-20
 15:29:24.478: E/AndroidRuntime(17039):     at
 java.lang.reflect.Method.invoke(Method.java:521) 04-20 15:29:24.478:
 E/AndroidRuntime(17039):   at
 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
 04-20 15:29:24.478: E/AndroidRuntime(17039):   at
 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 04-20
 15:29:24.478: E/AndroidRuntime(17039):     at
 dalvik.system.NativeStart.main(Native Method) 04-20 15:29:24.478:
 E/AndroidRuntime(17039): Caused by: java.lang.NullPointerException
 04-20 15:29:24.478: E/AndroidRuntime(17039):   at
 com.rezoluz.planesim.Scanner.getFiles(Scanner.java:11) 04-20
 15:29:24.478: E/AndroidRuntime(17039):     at
 com.rezoluz.planesim.ShortcutListActivity.onCreate(ShortcutListActivity.java:19)
 04-20 15:29:24.478: E/AndroidRuntime(17039):   at
 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 04-20 15:29:24.478: E/AndroidRuntime(17039):   at
 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
 04-20 15:29:24.478: E/AndroidRuntime(17039):   ... 11 more

我可以看到它引用了这个: gameList.add("testo7r"); 以及这个和这个 scanner.getFiles(); 但我不知道看到那里的问题,请帮忙!感谢您的时间和帮助,zeokila。

最佳答案

你忘记了初始化..所以它一定是一个空指针异常...

public class Scanner {

    public ArrayList<String> gameList = new ArrayList<String>();
    public String[] gameListFin;

    public void getFiles() {
        gameList.add("testo7r");
        gameList.add("test5or");
        gameList.add("te4stor");
        gameList.add("tes3tor");
        gameList.add("testo2r");
        gameListFin = gameList.toArray(new String[gameList.size()]);
    }

}

关于java - 当我使用 ListView 设置字符串数组时,我会强制关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247320/

相关文章:

java - 如何使用 xpath 查找特定类型的所有 xml 元素?

Android Studio 警告新版本库可用,但不存在

java - 某处缺少返回语句?

java - 在 GlassFish v3.1 上启动过滤器 MyFilter 时出现 InstantiationException

java - 将字符串java中的数字相加

java - 在单元测试中反射(reflection)以检查代码覆盖率

android向布局添加点线

android - Android : a good practice? 中的全屏应用程序

java - 将对象 ArrayList 转换为双列表的最佳方法是什么

java - 将文本文件中的数字输入到 ArrayList 中,同时计算每个数字的出现次数