【问题标题】:ListView Adapter Crashes ActivityListView 适配器崩溃活动
【发布时间】:2013-11-20 13:19:53
【问题描述】:

就像在 subcjet 中一样。当我评论 listView.setAdapter(adapter); 它只是显示另一个活动:

这是整个 onCreate:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista__klas);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }

        klasy = getResources().getStringArray(R.array.klasy);

        ListView listView = (ListView)findViewById(R.id.lista_klas);
        adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.activity_lista__klas);
        listView.setAdapter(adapter);
    }

当我按下启动此活动的按钮时,从 logcat 记录:

11-20 13:14:53.085    1494-1780/system_process I/ActivityManager﹕ START {cmp=pl.krasiniak.krachapp_beta/.Lista_Klas} from pid 3975
11-20 13:14:53.335    3975-3975/pl.krasiniak.krachapp_beta D/AndroidRuntime﹕ Shutting down VM
11-20 13:14:53.335    3975-3975/pl.krasiniak.krachapp_beta W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40a521f8)
11-20 13:14:53.345    3975-3975/pl.krasiniak.krachapp_beta E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{pl.krasiniak.krachapp_beta/pl.krasiniak.krachapp_beta.Lista_Klas}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2079)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
            at android.app.ActivityThread.access$600(ActivityThread.java:132)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4575)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at pl.krasiniak.krachapp_beta.Lista_Klas.onCreate(Lista_Klas.java:34)
            at android.app.Activity.performCreate(Activity.java:4465)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
            at android.app.ActivityThread.access$600(ActivityThread.java:132)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4575)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
            at dalvik.system.NativeStart.main(Native Method)
11-20 13:14:53.355    1494-1675/system_process W/ActivityManager﹕ Force finishing activity pl.krasiniak.krachapp_beta/.Lista_Klas
11-20 13:14:53.355    1494-1675/system_process W/ActivityManager﹕ Force finishing activity pl.krasiniak.krachapp_beta/.MainActivity
11-20 13:14:53.865    1494-1509/system_process W/ActivityManager﹕ Activity pause timeout for ActivityRecord{40ef3f48 pl.krasiniak.krachapp_beta/.Lista_Klas}
11-20 13:14:54.065    3215-3215/com.cyanogenmod.trebuchet W/Adreno200-EGLSUB﹕ SetSwapInterval() interval: 0 not set
11-20 13:14:54.105    1494-1506/system_process I/ActivityManager﹕ No longer want com.android.keychain (pid 3950): hidden #16
11-20 13:15:04.105    1494-1509/system_process W/ActivityManager﹕ Activity destroy timeout for ActivityRecord{40ebf3c0 pl.krasiniak.krachapp_beta/.MainActivity}
11-20 13:15:04.105    1494-1509/system_process W/ActivityManager﹕ Activity destroy timeout for ActivityRecord{40ef3f48 pl.krasiniak.krachapp_beta/.Lista_Klas}

我确定数组不为空。谢谢你的回答,问候:)

【问题讨论】:

  • 上下文是否为空?换一个值?
  • 您忘记在适配器中传递“klasy”数组。 :)
  • 你这样做了吗===> adapter = new ArrayAdapter(getApplicationContext(), R.layout.activity_lista__klas,klasy);
  • 什么意思?当我写 adapter = new ArrayAdapter&lt;String&gt;(this, R.layout.activity_lista__klas); 时,它没有区别
  • 但是从哪里将 klasy 数组添加到适配器?

标签: android listview android-listview crash adapter


【解决方案1】:

代码不正确:

setContentView(R.layout.activity_lista__klas);

// ...

ListView listView = (ListView)findViewById(R.id.lista_klas);
adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.activity_lista__klas);

内容视图和数组适配器使用相同的布局。当使用two-argument constructor of ArrayAdapter 时,资源ID 必须解析为单个TextViewfindViewById() 调用意味着它是一个更复杂的布局,带有 ListView

如果我正确理解您的意图,请执行以下操作:

  • 确保activity_list__klas 包含具有指定ID lista_klasListView,以便findViewById() 返回非null

  • 将适配器构造函数的布局资源 ID 更改为包含单个 TextView 的资源文件,该 TextView 代表您的列表行。或者更改为允许您指定映射数组项的TextViews 的另一个构造函数重载。

  • 向适配器提供一些数据以实际显示某些内容。

【讨论】:

  • 这就是解决方案!我忘记了你的第二点。非常感谢:)
【解决方案2】:

试试这个。添加第三个参数

adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.activity_lista__klas,klasy);

如果这不起作用。请也粘贴您的布局文件。

【讨论】:

    【解决方案3】:

    我猜你的问题在这里:

    ListView listView = (ListView)findViewById(R.id.lista_klas);
    

    检查您是否有一个具有此 ID 的 ListView 并且 listView 不为空。

    此外,当您创建适配器时,您需要将包含单个 TextView 的布局文件传递给 ArrayAdapter,以用于显示每个列表项。您已经传递了在 setContentView 中使用的相同布局,(我假设)是您的活动的完整布局。

    【讨论】:

    • 也许你是对的,因为其他解决方案不起作用。我是 Placeholder 的新手(我刚刚从 Eclipse 迁移到 Android Studio),我不知道是否将 ListView 放在 fragment_lista_klas.xml 中而不是在 activity_lista_klas.xml 中可以吗?
    • 抱歉,不太明白您的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多