【发布时间】:2015-07-13 22:35:21
【问题描述】:
我有两个活动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。
但是当我使用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();
}
有人可以帮我解决这个问题吗?
提前致谢,
亲切的问候,赛琳
【问题讨论】:
-
请发布崩溃的日志(或检查一下,您就会知道..),以便了解导致它的原因和原因
-
感谢您的建议我编辑了我的问题:)
-
你的listView在你调用方法的那一刻不存在。这是因为该活动未处于活动状态并且已被回收以节省内存。你不应该从 Activity 之外更新 UI。
-
显示你在哪里调用这个函数
-
@AdnanElezovic 谢谢!但是当应用返回主屏幕时,它不会显示列表的最后一个版本。
标签: java android android-studio