首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >findViewByID找不到ListView

findViewByID找不到ListView
EN

Stack Overflow用户
提问于 2016-01-12 00:03:34
回答 1查看 1.3K关注 0票数 0

日志上写着:

代码语言:javascript
复制
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.t99sdevelopment.centralized/com.t99sdevelopment.centralized.ContactBookScreen}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference

在…

代码语言:javascript
复制
com.t99sdevelopment.centralized.ContactBookScreen.<init>(ContactBookScreen.java:26)

它正在寻找@+id/nameList,但是很明显,它是ListView类型的,所以我不知道问题是什么。我尝试从Parse获取一个数组,分别将该数组设置为teacherName[]、teacherPosition[]和teacherNumber[],然后创建一个适配器来显示ListView上的数据。

代码语言:javascript
复制
package com.t99sdevelopment.centralized;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.parse.GetCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;

import java.sql.Array;
import java.util.Arrays;
import java.util.List;

public class ContactBookScreen extends AppCompatActivity {

    String[] teacherName;
    String[] teacherPosition;
    String[] teacherNumber;
    ListView nameList = (ListView) findViewById(R.id.nameList);   <---the error is here.
    ListView positionList = (ListView) findViewById(R.id.positionList);
    ListView numberList = (ListView) findViewById(R.id.numberList);

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




    }

    public void parseGet(View view){
        ParseQuery<ParseObject> query = ParseQuery.getQuery("data");
        query.getInBackground("zF3GAgdbi3", new GetCallback<ParseObject>() {
            public void done(ParseObject object, ParseException e) {
                if (e == null) {
                    teacherName = (String[]) object.get("TeacherName");
                    teacherPosition = (String[]) object.get("TeacherPosition");
                    teacherNumber = (String[]) object.get("TeacherPhone");
                } else {

                }
            }
        });

        ArrayAdapter<String> nameAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, teacherName);
        nameList.setAdapter(nameAdapter);

        ArrayAdapter<String> positionAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, teacherPosition);
        positionList.setAdapter(positionAdapter);

        ArrayAdapter<String> numberAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, teacherNumber);
        numberList.setAdapter(numberAdapter);
    }

    private void setActionBarText(){
        TextView actionBarText = (TextView) findViewById(R.id.toolbar_title);
        actionBarText.setText("Contact Book");
    }
}

以下是XML:

代码语言:javascript
复制
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar"
    android:background="@color/trojanWhite">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center_horizontal">

        <include
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            layout="@layout/actionbar" />

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="horizontal">

                    <ListView
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:layout_height="wrap_content"
                        android:id="@+id/nameList"/>

                    <ListView
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:layout_height="wrap_content"
                        android:id="@+id/positionList"
                        android:layout_toRightOf="@+id/nameList"/>

                    <ListView
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:layout_height="wrap_content"
                        android:id="@+id/numberList"
                        android:layout_toRightOf="@+id/positionList"/>

                </LinearLayout>

                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="@color/trojanBlack" />

            </LinearLayout>

        </ScrollView>

    </LinearLayout>


    <android.support.design.widget.NavigationView
        android:id="@+id/nvView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@android:color/white"
        app:menu="@menu/navigationdraweritems"
        app:headerLayout="@layout/nav_header"
        />


</android.support.v4.widget.DrawerLayout>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-12 00:06:42

空对象引用上的“android.view.View android.view.Window.findViewById(Int)”

因为在类级别创建活动之前使用活动上下文。

调用onCreate后访问setContentView中的所有视图

代码语言:javascript
复制
ListView nameList,positionList,numberList;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contactbookscreen);
        // access Views here from activity_contactbookscreen layout
          nameList = (ListView) findViewById(R.id.nameList);    
          positionList = (ListView) findViewById(R.id.positionList);
          numberList = (ListView) findViewById(R.id.numberList);
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34733388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档