0

The logs say:

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

at

com.t99sdevelopment.centralized.ContactBookScreen.<init>(ContactBookScreen.java:26)

It's looking for @+id/nameList, but it very obviously has this, and is of type ListView, so I don't know what the problem is. I'm trying to take an array from Parse, set that array to teacherName[], teacherPosition[], and teacherNumber[], respectively, and then create an adapter to show that data on the ListView.

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");
    }
}

Here's the XML:

<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>
Trevor Sears
  • 459
  • 8
  • 24

1 Answers1

3

'android.view.View android.view.Window.findViewById(int)' on a null object reference

Because using Activity Context before creation of Activity at class level.

access all Views inside onCreate after calling setContentView:

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);
    }
ρяσѕρєя K
  • 132,198
  • 53
  • 198
  • 213