日志说:
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
在
com.t99sdevelopment.centralized.ContactBookScreen.<init>(ContactBookScreen.java:26)
它正在寻找@ + id / nameList,但它显然有这个,并且是ListView类型,所以我不知道问题是什么。我正在尝试从Parse获取一个数组,将该数组分别设置为teacherName [],teacherPosition []和teacherNumber [],然后创建一个适配器以在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");
}
}
这是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>
答案 0 :(得分:3)
'android.view.View android.view.Window.findViewById(int)'上的null 对象参考
因为在类级别创建Activity之前使用了Activity Context。
在调用onCreate
后访问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);
}