[英]My Android app crashes when I use method from MainActivity in an other Activity
我有兩個活動MainActivity
和Additem
在MainActivity中,我有這種方法:
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
Mainscreen
。
但是當我使用updateUI()
; 在Additem
,保存任務時它會返回,但應用程序崩潰會重新啟動。
作為錯誤,我得到了:
原因:java.lang.NullPointerException:嘗試在空對象引用上調用虛擬方法'void 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();
}
有人可以幫我解決這個問題嗎?
提前致謝,
親切的問候,塞琳
您的列表視圖為null,當您從其他活動中調用它時(當MainActivity暫停/停止時),您實際上是在執行null.setAdapter
,這會導致崩潰。
您應該向MainActivity發布某種事件,並在MainActivity恢復時更新列表/適配器。 或者,您始終可以在MainActivity的onCreate
/ onResume
中刷新/更新適配器。
我建議您在MainActivity
初始化listView
和listAdapter
,並在更新UI中通過使用刷新視圖
listAdapter.notifyDataSetChanged()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.