无法在 eclipse 上启动 activity componentInfo

Unable to start activity componentInfo on eclipse

我的 java 代码目前有问题。每次单击我的查看按钮时,我的应用程序都会崩溃。在我的 logcat 上,我收到一条错误消息

Caused by: java.lang.NullPointerException and the other error is java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.moviemanager/com.example.moviemanager.viewmoviedetails}: java.lang.NullPointerException**

这是我的viewmoviedetails代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.viewmoviedetail);

    keyEditText = (EditText)findViewById(R.id.keyeditText);
    titleEditText = (EditText)findViewById(R.id.titleeditText);
    typeEditText = (EditText)findViewById(R.id.typeeditText);
    storyEditText = (EditText)findViewById(R.id.storyeditText);
    ratingEditText = (EditText)findViewById(R.id.ratingeditText);
    languageEditText = (EditText)findViewById(R.id.languageeditText);
    runtimeEditText = (EditText)findViewById(R.id.runtimeeditText);

    Bundle extras = getIntent().getExtras();
    rowID = extras.getLong("row_id");

    Button btnback = (Button)findViewById(R.id.backbutton);
    btnback.setOnClickListener(backButtonClicked);
}
OnClickListener backButtonClicked = new OnClickListener(){
    @Override
    public void onClick(View v){
        finish();
    }
};
@Override
protected void onResume(){
    super.onResume();
    new LoadMovieTask().execute(rowID);
}

private class LoadMovieTask extends AsyncTask<Long, Object, Cursor>{
    DatabaseHandler dh = new DatabaseHandler(viewmoviedetails.this);

    @Override
    protected Cursor doInBackground(Long... params){
        dh.open();
        return dh.getRow(params[0]);
    }

    @Override
    protected void onPostExecute(Cursor result){
        super.onPostExecute(result);
        result.moveToFirst();
        int keyindex = result.getColumnIndex("mvkey");
        int titleindex = result.getColumnIndex("mvtitle");
        int typeindex = result.getColumnIndex("mvtype");
        int storyindex = result.getColumnIndex("mvstory");
        int ratingindex = result.getColumnIndex("mvrating");
        int languageindex = result.getColumnIndex("mvlanguage");
        int runtimeindex = result.getColumnIndex("mvruntime");

        keyEditText.setText(result.getString(keyindex));
        titleEditText.setText(result.getString(titleindex));
        typeEditText.setText(result.getString(typeindex));
        storyEditText.setText(result.getString(storyindex));
        ratingEditText.setText(result.getString(ratingindex));
        languageEditText.setText(result.getString(languageindex));
        runtimeEditText.setText(result.getString(runtimeindex));

        result.close();
        dh.close();
    }
}

谁能帮我解决我的错误。提前致谢

看起来 extras 在您的 ActivityonCreate() 方法中是 null

编辑:

在您的 ViewMovie class 中,您将以

开始下一个 Activity
 i = new Intent(this, com.example.moviemanager.viewmoviedetails.class);
 startActivity(i);

问题是你没有将额外的数据添加到Intent,所以当你调用

 Bundle extras = getIntent().getExtras();

ViewMovieDetails 中,你得到 null

您需要像这样向 Intent 添加额外内容:

i = new Intent(this, com.example.moviemanager.viewmoviedetails.class);
i.putExtra("row_id", (long) row_id)
startActivity(i);

其中 row_id 是您要传递的 long 值。然后将 ViewMovieDetails 中的值恢复为

rowID = getIntent().getLongExtra("row_id", 0L);

这会起作用。