我的Android应用程序崩溃,当我在其他活动
使用来自MainActivity方法我有两个活动MainActivity
和Additem
我的Android应用程序崩溃,当我在其他活动
我有这样的方法:
public void updateUI() {
helper = new TaskDBHelper(MainActivity.this);
SQLiteDatabase sqlDB = helper.getReadableDatabase();
Cursor cursor = sqlDB.query(TaskContract.TABLE,
new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK},
null,null,null,null,null);
listAdapter = new SimpleCursorAdapter(
this,
R.layout.task_view,
cursor,
new String[] { TaskContract.Columns.TASK},
new int[] { R.id.taskTextView},
0
);
ListView listView = (ListView)findViewById(R.id.list);
listView.setAdapter(listAdapter);
}
它更新的Mainscreen
的tasklist
。
但是当我使用updateUI()
;在Additem
,保存任务它返回,但应用程序崩溃重新启动自己。
作为错误我得到这个:
引起:显示java.lang.NullPointerException:尝试调用虚拟方法 '无效android.widget.ListView.setAdapter(android.widget.ListAdapter)' 上的空对象引用
这是我的代码,我在ADDITEM使用updateUI():
public void saveItem(View view){
EditText editText = (EditText)findViewById(R.id.editText);
String task = editText.getText().toString();
Log.d("Additem", task);
helper = new TaskDBHelper(Additem.this);
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.clear();
values.put(TaskContract.Columns.TASK, task);
db.insertWithOnConflict(TaskContract.TABLE, null, values,
SQLiteDatabase.CONFLICT_IGNORE);
updateUI();
finish();
}
有人能帮助我解决这个问题?
由于提前,
亲切的问候,塞林
你的列表视图为空,当你从其他活动称之为[当在MainActivity暂停/停止]你实际上是在做null.setAdapter
这是造成死机。
您应该向MainActivity发布某种事件,并在MainActivity恢复时更新列表/适配器。或者您可以随时刷新/更新MainActivity的onCreate
/onResume
中的适配器。
感谢这工作! :) –
我建议你来初始化你MainActivity
和更新UI的listView
和listAdapter
只需使用
listAdapter.notifyDataSetChanged()
请发表日志刷新视图(或检查,你就会知道..)的崩溃,所以它可以知道是什么造成它,为什么 – user2450263
感谢您的意见,我编辑了我的问题:) –
您调用该方法时,您的listView不存在。这是因为该活动未处于活动状态并已被回收以节省内存。您不应该从活动外更新UI。 –