【问题标题】:Android Studio null exception error on a ListView with custom ListAdapter具有自定义 ListAdapter 的 ListView 上的 Android Studio 空异常错误
【发布时间】:2019-01-24 12:02:32
【问题描述】:

[已编辑] 这是你们中的一些人要求的 mainScreen 活动 xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:design="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F6F6F6">


    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="4dp"
        android:fontFamily="@font/montserrat"
        android:text="Pocket Budget"
        android:textColor="#77dd77"
        android:textSize="26dp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="138dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:fontFamily="@font/montserrat"
        android:gravity="center"
        android:text="January"
        android:textColor="#443c3c"
        android:textSize="16dp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@+id/textView8"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/textView8"
        app:layout_constraintTop_toTopOf="@+id/textView8" />

    <View
        android:id="@+id/view5"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_marginTop="7dp"
        android:background="#FFF"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView8" />

    <View
        android:id="@+id/view2"
        android:layout_width="116dp"
        android:layout_height="50dp"
        android:layout_marginBottom="3dp"
        android:layout_marginEnd="3dp"
        android:layout_marginTop="3dp"
        android:background="#77dd77"
        app:layout_constraintBottom_toBottomOf="@+id/view5"
        app:layout_constraintEnd_toEndOf="@+id/view5"
        app:layout_constraintTop_toTopOf="@+id/view5" />

    <View
        android:id="@+id/view3"
        android:layout_width="116dp"
        android:layout_height="50dp"
        android:layout_marginBottom="3dp"
        android:layout_marginStart="3dp"
        android:layout_marginTop="3dp"
        android:background="#779ecb"
        app:layout_constraintBottom_toBottomOf="@+id/view5"
        app:layout_constraintStart_toStartOf="@+id/view5"
        app:layout_constraintTop_toTopOf="@+id/view5" />

    <View
        android:id="@+id/view4"
        android:layout_width="116dp"
        android:layout_height="50dp"
        android:layout_marginBottom="3dp"
        android:layout_marginEnd="3dp"
        android:layout_marginStart="3dp"
        android:layout_marginTop="3dp"
        android:background="#ff6961"
        app:layout_constraintBottom_toBottomOf="@+id/view5"
        app:layout_constraintEnd_toStartOf="@+id/view2"
        app:layout_constraintStart_toEndOf="@+id/view3"
        app:layout_constraintTop_toTopOf="@+id/view5" />

    <TextView
        android:id="@+id/textView12"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="2dp"
        android:fontFamily="@font/montserrat"
        android:text="Balance"
        android:textColor="#FFF"
        android:textSize="9.5dp"
        app:layout_constraintBaseline_toBaselineOf="@+id/textView2"
        app:layout_constraintStart_toStartOf="@+id/view2" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="2dp"
        android:fontFamily="@font/montserrat"
        android:text="Expense"
        android:textColor="#FFF"
        android:textSize="9.5dp"
        design:layout_constraintBaseline_toBaselineOf="@+id/textView"
        design:layout_constraintStart_toStartOf="@+id/view4" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="2dp"
        android:fontFamily="@font/montserrat"
        android:text="Income"
        android:textColor="#FFF"
        android:textSize="9.5dp"
        design:layout_constraintStart_toStartOf="@+id/view3"
        design:layout_constraintTop_toTopOf="@+id/view3" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="116dp"
        android:layout_height="25dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:autoSizeTextType="uniform"
        android:fontFamily="@font/montserrat"
        android:gravity="center"
        android:text="₱ 0"
        android:textColor="#FFF"
        android:textSize="20dp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@+id/textView6"
        app:layout_constraintEnd_toEndOf="@+id/view3"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="@+id/view3"
        app:layout_constraintTop_toTopOf="@+id/textView6"
        app:layout_constraintVertical_bias="1.0" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="116dp"
        android:layout_height="25dp"
        android:layout_marginBottom="8dp"
        android:layout_marginStart="8dp"
        android:autoSizeTextType="uniform"
        android:fontFamily="@font/montserrat"
        android:gravity="center"
        android:text="₱ 0"
        android:textColor="#FFF"
        android:textSize="20dp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@+id/view4"
        app:layout_constraintEnd_toEndOf="@+id/view4"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="@+id/view4"
        app:layout_constraintTop_toBottomOf="@+id/textView2"
        app:layout_constraintVertical_bias="0.0" />

    <TextView
        android:id="@+id/textView11"
        android:layout_width="116dp"
        android:layout_height="25dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="12dp"
        android:layout_marginTop="8dp"
        android:autoSizeTextType="uniform"
        android:fontFamily="@font/montserrat"
        android:gravity="center"
        android:text="₱ 0"
        android:textColor="#FFF"
        android:textSize="20dp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@+id/textView6"
        app:layout_constraintEnd_toEndOf="@+id/view2"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="@+id/view2"
        app:layout_constraintTop_toTopOf="@+id/textView6" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="5dp"
        android:fontFamily="@font/montserrat"
        android:text="Transactions"
        android:textColor="#808080"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/view5" />

    <ListView
        android:id="@+id/transacList"
        android:layout_width="344dp"
        android:layout_height="438dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:background="#FFF"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView5"
        app:layout_constraintVertical_bias="0.0"></ListView>
</android.support.constraint.ConstraintLayout>

这是我的自定义 ListView 的代码我不知道哪里出了问题,因为我只是 android 开发的初学者

package com.example.admin.test2;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

    ListView mListView;



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

        new Timer().schedule(new TimerTask(){
            @Override
            public void run(){
                startActivity(new Intent(MainActivity.this, ScreenOne.class));
            }
        }, 2500);

        mListView = (ListView) findViewById(R.id.transacList);

        CustomAdaptor cAdaptor = new CustomAdaptor();
        mListView.setAdapter(cAdaptor);

    }

    class CustomAdaptor extends BaseAdapter{

        @Override
        public int getCount() {
            return 0;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = getLayoutInflater().inflate(R.layout.customlist, null);

            ImageView mImageView = (ImageView) view.findViewById(R.id.imageView2);
            TextView mTextView = (TextView) view.findViewById(R.id.textView2);
            TextView mTextView2 = (TextView) view.findViewById(R.id.textView3);

            mImageView.setImageResource(R.drawable.car);
            mTextView.setText("Transportation");
            mTextView2.setText("₱ 100");


            return view;
        }
    }

}

这是我的自定义列表视图布局的代码,它将在我的 mainScreen 中实现,用于查看带有标签和数量的图像图标

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="19dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.015"
        app:srcCompat="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="120dp"
        android:layout_height="25dp"
        android:layout_marginBottom="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:autoSizeTextType="uniform"
        android:text="Label"
        android:textSize="20dp"
        app:layout_constraintBottom_toBottomOf="@+id/imageView2"
        app:layout_constraintStart_toEndOf="@+id/imageView2"
        app:layout_constraintTop_toTopOf="@+id/imageView2"
        app:layout_constraintVertical_bias="1.0" />

    <TextView
        android:layout_width="147dp"
        android:layout_height="21dp"
        android:layout_marginEnd="18dp"
        android:layout_marginStart="8dp"
        android:autoSizeTextType="uniform"
        android:gravity="right"
        android:text="Amount"
        app:layout_constraintBottom_toBottomOf="@+id/textView3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toEndOf="@+id/textView3"
        app:layout_constraintTop_toTopOf="@+id/textView3"
        app:layout_constraintVertical_bias="1.0" />


</android.support.constraint.ConstraintLayout>

这是我遇到的错误。

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.admin.test2, PID: 9518
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.admin.test2/com.example.admin.test2.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
                      at android.app.ActivityThread.-wrap11(Unknown Source:0)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
                      at android.os.Handler.dispatchMessage(Handler.java:105)
                      at android.os.Looper.loop(Looper.java:164)
                      at android.app.ActivityThread.main(ActivityThread.java:6944)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
                   Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
                      at com.example.admin.test2.MainActivity.onCreate(MainActivity.java:37)
                      at android.app.Activity.performCreate(Activity.java:7174)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 
                      at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 
                      at android.os.Handler.dispatchMessage(Handler.java:105) 
                      at android.os.Looper.loop(Looper.java:164) 
                      at android.app.ActivityThread.main(ActivityThread.java:6944) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 

请有人帮忙解决这个问题,应用程序在运行时被强制关闭,我不知道出了什么问题。

【问题讨论】:

  • 这是问题所在:mListView = (ListView) findViewById(R.id.transacList); 您的 mListView 为空
  • 我该怎么办?
  • 请出示R.layout.activity_main的内容
  • 完成已添加
  • 您找到问题的解决方案了吗?!然后发布或标记接受的答案。

标签: android android-studio listview listadapter custom-lists


【解决方案1】:

您的 ListView "mListView" 似乎尚未初始化,请确保您已正确初始化它,如果您分享您的 activity_main.xml 代码将会很有帮助。

【讨论】:

    【解决方案2】:

    您的布局上没有任何列表视图,因此您会遇到此异常。尝试添加如下内容:

    <ListView
            android:id="@+id/transacList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="19dp"
            android:layout_marginTop="8dp" />
    

    边距和内边距应根据您对列表视图的使用而设计。

    【讨论】:

      【解决方案3】:

      您没有初始化列表视图,请在设置适配器之前添加此行。 mListView = findViewById(R.id.*your list view id*);

      【讨论】:

      • main_activity 中可能缺少,我们还不知道
      • 没有XML
      【解决方案4】:

      ListViewnull,所以不能设置它的适配器。 因此你得到这个错误:

      Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
      

      findViewById(R.id.transacList) 返回 null 因为 ID 错误或 casting 错误或您的 自定义列表视图 搞砸了。无法从您提供的代码中判断。

      【讨论】:

      • 我该怎么办?我应该输入什么?
      • 提供activity_main的XML代码,也提供自定义listview的代码。您在当前帖子中提供了自定义适配器的代码,而不是自定义列表视图。
      • Strang 它应该可以工作。 id是正确的,调用是正确的。您能否注释掉第 24-29 行,计时器代码。还在第 33 行设置断点。列表视图仍然为空吗?也可以尝试evaluate expression,按照本指南进行操作。 i.stack.imgur.com/a4FKs.gif,这是给它的帖子:stackoverflow.com/questions/44379887/…
      • 好的,让我们分解一下。 1. 您能否访问该 XML 中的一些其他组件,findViewById(...)?喜欢textView8?如果这也是 NULL,那么您引用了错误的 XML,您必须引用 activity_main,而不是其他 XML。 2. 下一步是注释掉所有组件并且在那个XML 中只有ListView,然后每次带回一个组件。直到找到问题的根源。 3. 你是否重新定义了正确的 import your_application_package_name.R?;
      猜你喜欢
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多