我有两项活动Additem
和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);
}
我有这个方法:
tasklist
它会更新Mainscreen
上的updateUI()
。
但是当我使用Additem
时;在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();
}
中,在保存它返回的任务时,应用程序崩溃并重新启动。
由于错误,我得到了这个:
引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.widget.ListView.setAdapter(android.widget.ListAdapter)'
这是我在Additem中使用updateUI()的代码:
awk -F ', ' '{
split($1, a, " ");
k=a[2] OFS a[3];
if(!(k in c))
b[++n]=k;
c[k]++;
sum[k]+=$2
}
END{
for(i=1; i<=n; i++)
printf "%s - %.2f\n", b[i], (sum[b[i]]/c[b[i]])
}' file
Jul 5 - 97.00
Jul 6 - 87.67
Jul 7 - 97.00
Jul 8 - 98.00
Jul 9 - 100.00
Jul 10 - 100.00
Jul 11 - 73.00
有人可以帮我解决这个问题吗?
提前致谢,
亲切的问候,塞林
答案 0 :(得分:2)
您的列表视图为空,当您从其他活动(当MainActivity暂停/停止时)调用它时,您实际上正在执行导致崩溃的null.setAdapter
。
您应该向MainActivity发布某种事件,并在MainActivity恢复时更新列表/适配器。或者,您始终可以在MainActivity的onCreate
/ onResume
中刷新/更新适配器。
答案 1 :(得分:0)
我建议您初始化listView
中的listAdapter
和MainActivity
,在更新用户界面中,只需使用
listAdapter.notifyDataSetChanged()