Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我在其他活动中使用MainActivity的方法时,我的Android应用程序崩溃_Java_Android_Android Studio - Fatal编程技术网

Java 当我在其他活动中使用MainActivity的方法时,我的Android应用程序崩溃

Java 当我在其他活动中使用MainActivity的方法时,我的Android应用程序崩溃,java,android,android-studio,Java,Android,Android Studio,我有两个活动main活动和Additem 在MainActivity中,我有以下方法: public void updateUI() { helper = new TaskDBHelper(MainActivity.this); SQLiteDatabase sqlDB = helper.getReadableDatabase(); Cursor cursor = sqlDB.query(TaskContract.TABLE, new String

我有两个活动
main活动
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);

}
它更新
主屏幕上的
任务列表

但是当我使用
updateUI()
;在
Additem
中,保存任务时返回,但应用程序崩溃并重新启动

作为错误,我得到了这个:

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.ListView.setAdapter(android.widget.ListAdapter)”

这是我在代码中使用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();
}
有人能帮我解决这个问题吗

提前感谢,


您好,Selin

您的listview为空,当您从其他活动调用它时[当MainActivity暂停/停止时],您实际上正在执行导致崩溃的
null.setAdapter


您应该向MainActivity发布某种事件,并在MainActivity恢复时更新列表/适配器。或者您可以始终在MainActivity的
onCreate
/
onResume
中刷新/更新适配器。

我建议您在
MainActivity
中初始化
listView
listAdapter
,并在更新UI中使用

listAdapter.notifyDataSetChanged()

请发布一个崩溃日志(或者检查一下,你就会知道…),这样就可以知道是什么原因导致了它,以及为什么需要你的建议。我编辑了我的问题:)当你调用该方法时,你的listView不存在。这是因为该活动未处于活动状态,已被回收以节省内存。您不应该从活动外部更新UI。请在此处显示您称之为function@AdnanElezovic谢谢但当应用程序返回主屏幕时,它不会显示列表的最后版本。