无法在 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
在您的 Activity
的 onCreate()
方法中是 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);
这会起作用。
我的 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
在您的 Activity
的 onCreate()
方法中是 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);
这会起作用。