Android java.lang.RuntimeException:无法启动活动组件信息{…}:java.lang.NullPointerException
当您单击从一个活动转到另一个活动时,我有一个错误:Android java.lang.RuntimeException:无法启动活动组件信息{…}:java.lang.NullPointerException,android,nullpointerexception,Android,Nullpointerexception,当您单击从一个活动转到另一个活动时,我有一个错误: java.lang.RuntimeException:无法启动活动组件信息{…}:java.lang.NullPointerException 我错过了一些方法?请帮助我理解我做错了什么,这就是为什么你会看到这个错误 我的活动:Zaselenie.java import java.util.ArrayList; import android.app.Activity; import android.database.Cursor; impor
java.lang.RuntimeException:无法启动活动组件信息{…}:java.lang.NullPointerException
我错过了一些方法?请帮助我理解我做错了什么,这就是为什么你会看到这个错误
我的活动:Zaselenie.java
import java.util.ArrayList;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class Zaselenie extends Activity {
ContactDBmoy cqh;
KvartDB kdb;
SQLiteDatabase sdb;
private Long rowId;
Spinner spZaselenie;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.zaselenie);
spZaselenie = (Spinner)findViewById(R.id.spZaselenie);
// Инициализируем наш класс-обёртку
cqh = new ContactDBmoy(Zaselenie.this);
kdb = new KvartDB(Zaselenie.this);
// База нам нужна для записи и чтения
sdb = cqh.getWritableDatabase();
sdb = kdb.getWritableDatabase();
Bundle extras = getIntent().getExtras();
rowId = extras.getLong(ContactMain.rowId);
Cursor cursorKvart = sdb.query(KvartDB.TABLE_NAME, new String[] {
KvartDB._ID, KvartDB.NAME_COLUMN }, null, // The
// columns
// for the
// WHERE
// clause
null, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
null // The sort order
);
ArrayList<String> labels = new ArrayList<String>();
while (cursorKvart.moveToNext()) {
// GET COLUMN INDICES + VALUES OF THOSE COLUMNS
int idKvart = cursorKvart.getInt(cursorKvart.getColumnIndex(KvartDB._ID));
String nameKvart = cursorKvart.getString(cursorKvart.getColumnIndex(KvartDB.NAME_COLUMN));
Log.i("LOG_TAG", "ROW " + idKvart + " HAS NAME " + nameKvart);
labels.add(nameKvart);
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, labels);
// Drop down layout style - list view with radio button
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dataAdapter.notifyDataSetChanged();
// attaching data adapter to spinner
spZaselenie.setAdapter(dataAdapter);
}
cursorKvart.close();
}
public Zaselenie() {
// TODO Auto-generated constructor stub
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onStop() {
super.onStop();
// закрываем соединения с базой данных
sdb.close();
kdb.close();
}
}
检查
extras
是否为null
,如下所示
if(extras != null) {
rowId = extras.getLong(ContactMain.rowId);
}
if(cursorKvart != null && cursorKvart.getCount() > 0) {
while (cursorKvart.moveToNext()) {
......
}
}
还要检查光标对象是否为空,如下所示
if(extras != null) {
rowId = extras.getLong(ContactMain.rowId);
}
if(cursorKvart != null && cursorKvart.getCount() > 0) {
while (cursorKvart.moveToNext()) {
......
}
}
首先检查您的rowId
notnull
并在While()外部设置ArrayAdapter
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, labels);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spZaselenie.setAdapter(dataAdapter);
ArrayAdapter dataAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u微调器(项目、标签);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
设置适配器(数据适配器);
您应该在dubug模式下运行代码,这样您就可以很容易地确定在哪一行获得空指针。我认为这是发现异常和错误的最佳方法。哪一行是您的39行???getExtras()
返回null
您的问题可能在这里rowId=extras.getLong(ContactMain.rowId);因为getExtras()为空。@Zloyel给出了给出答案的反馈。