Android main 和 AsyncTask #2 发生致命异常错误

Android Error Fatal Exception at main and AsyncTask #2

我不知道为什么 logcat 会出现此错误。一旦我 运行 我的应用程序,它就会中途崩溃。

这是我的 AsyncTask 代码:

OnClickListener addMovieButtonClicked = new OnClickListener(){
    @Override
    public void onClick(View v){
        if(mvidEditText.getText().length()!= 0){
            AsyncTask<Object, Object, Object>addMovieTask =
                    new AsyncTask<Object, Object, Object>(){
                @Override
                protected Object doInBackground(Object... params){
                    addMovie();
                    return null;
                }

                @Override
                protected void onPostExecute(Object result){
                    finish();
                    Toast.makeText(AddMovie.this, "Success", Toast.LENGTH_LONG).show();

                }
            };
            addMovieTask.execute((Object[]) null);
        }else {
            AlertDialog.Builder builder = new AlertDialog.Builder(AddMovie.this);
            builder.setTitle(R.string.errorTitle);
            builder.setMessage(R.string.errorMessage);
            builder.setPositiveButton(R.string.errorButton, null);
            builder.show();
        }
    }
};

这是 logcat 处的错误消息:

更新了 addMovie() 代码:

private void addMovie(){
    DatabaseHandler databaseHandler = new DatabaseHandler(this);
    if(getIntent().getExtras()== null){
        databaseHandler.insertRow(
                mvidEditText.getText().toString(), 
                mvtitleEditText.getText().toString(),
                mvtypeEditText.getText().toString(), 
                mvstoryEditText.getText().toString(), 
                mvratingEditText.getText().toString(), 
                mvlanguageEditText.getText().toString(),
                Integer.parseInt(mvruntimeEditText.getText().toString()));
    }else {
        databaseHandler.updateRow(rowID,
                mvidEditText.getText().toString(), 
                mvtitleEditText.getText().toString(),
                mvtypeEditText.getText().toString(), 
                mvstoryEditText.getText().toString(), 
                mvratingEditText.getText().toString(), 
                mvlanguageEditText.getText().toString(),
                Integer.parseInt(mvruntimeEditText.getText().toString()));

    }
}

这是 insertRow() 的数据库处理程序代码:

public long insertRow(String mvkey, String mvtitle, String mvtype,
        String mvstory, String mvrating, String mvlanguage, int mvruntime){
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_KEY, mvkey);
    initialValues.put(KEY_TITLE, mvtitle);
    initialValues.put(KEY_TYPE, mvtype);
    initialValues.put(KEY_STORY, mvstory);
    initialValues.put(KEY_RATING, mvrating);
    initialValues.put(KEY_LANGUAGE, mvlanguage);
    initialValues.put(KEY_RUNTIME, mvruntime);

    return db.insert(DATABASE_TABLE, null, initialValues);

}

对于屏幕截图,我很抱歉,但这是显示错误的唯一方式。我是 Android 应用程序开发的初学者。谢谢。

我不小心更改了 insertRow() 中的公共无效函数。所以我所做的是更改了下面的代码

public long insertRow(String mvkey, String mvtitle, String mvtype,
    String mvstory, String mvrating, String mvlanguage, int mvruntime){
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_KEY, mvkey);
initialValues.put(KEY_TITLE, mvtitle);
initialValues.put(KEY_TYPE, mvtype);
initialValues.put(KEY_STORY, mvstory);
initialValues.put(KEY_RATING, mvrating);
initialValues.put(KEY_LANGUAGE, mvlanguage);
initialValues.put(KEY_RUNTIME, mvruntime);

return db.insert(DATABASE_TABLE, null, initialValues);
}

这是我更新后的工作代码:

public void insertRow(String mvkey, String mvtitle, String mvtype,
        String mvstory, String mvrating, String mvlanguage, int mvruntime){
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_KEY, mvkey);
    initialValues.put(KEY_TITLE, mvtitle);
    initialValues.put(KEY_TYPE, mvtype);
    initialValues.put(KEY_STORY, mvstory);
    initialValues.put(KEY_RATING, mvrating);
    initialValues.put(KEY_LANGUAGE, mvlanguage);
    initialValues.put(KEY_RUNTIME, mvruntime);

    open();
    db.insert(DATABASE_TABLE, null, initialValues);
    close();
}