在主要活動傳遞額外的主要活動我必須一個按鈕添加一個新的註釋(這是一個老的便籤Android應用程序):從另一個調用
ArrayAdapter<Note> adapter = (ArrayAdapter<Note>) getListAdapter();
Note note = null;
switch (view.getId()) {
case R.id.add:
// Call AddActivity to specify content of the note fields to be
// added to the DB
intentToAdd = new Intent(this, AddActivity.class);
startActivity(intentToAdd);
//get the extras from AddActivity
Note newNote = getIntent().getExtras().getParcelable("myNewNote");
String summary = newNote.getSummary();
String details = newNote.getDetails();
// Save the new note in the database
note = datasource.createNote(summary, details);
adapter.add(note);
break;
然後我有AddActivity(其中包含形式添加一個新注),其onCreate方法是:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
butAdd = (Button) findViewById(R.id.buttonAjout);
intentToMain = new Intent(this, MainActivity.class);
butAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText summary = ((EditText) findViewById(R.id.editTextSum));
EditText details = ((EditText) findViewById(R.id.editTextDet));
Note note =new Note(summary.toString(),details.toString());
intentToMain.putExtra("myNewNote", note);
startActivity(intentToMain);
}
});
}
N.B:我的Note類實現Parcelable Class!
這裏是我的問題: 當我點擊添加按鈕在主活動我的應用程序崩潰(「意外停止」)爲什麼:(???
告訴我,如果有一些其他失蹤信息或代碼...謝謝...
的logcat的說,這是一個NullPointerException:
04-21 17:00:07.832: D/AndroidRuntime(278): Shutting down VM
04-21 17:00:07.832: W/dalvikvm(278): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
04-21 17:00:07.892: E/AndroidRuntime(278): FATAL EXCEPTION: main
04-21 17:00:07.892: E/AndroidRuntime(278): java.lang.IllegalStateException: Could not execute method of the activity
04-21 17:00:07.892: E/AndroidRuntime(278): at android.view.View$1.onClick(View.java:2072)
04-21 17:00:07.892: E/AndroidRuntime(278): at android.view.View.performClick(View.java:2408)
04-21 17:00:07.892: E/AndroidRuntime(278): at android.view.View$PerformClick.run(View.java:8816)
04-21 17:00:07.892: E/AndroidRuntime(278): at android.os.Handler.handleCallback(Handler.java:587)
04-21 17:00:07.892: E/AndroidRuntime(278): at android.os.Handler.dispatchMessage(Handler.java:92)
04-21 17:00:07.892: E/AndroidRuntime(278): at android.os.Looper.loop(Looper.java:123)
04-21 17:00:07.892: E/AndroidRuntime(278): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-21 17:00:07.892: E/AndroidRuntime(278): at java.lang.reflect.Method.invokeNative(Native Method)
04-21 17:00:07.892: E/AndroidRuntime(278): at java.lang.reflect.Method.invoke(Method.java:521)
04-21 17:00:07.892: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-21 17:00:07.892: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-21 17:00:07.892: E/AndroidRuntime(278): at dalvik.system.NativeStart.main(Native Method)
04-21 17:00:07.892: E/AndroidRuntime(278): Caused by: java.lang.reflect.InvocationTargetException
04-21 17:00:07.892: E/AndroidRuntime(278): at com.insat.notememoiresqlite.MainActivity.onClick(MainActivity.java:69)
04-21 17:00:07.892: E/AndroidRuntime(278): at java.lang.reflect.Method.invokeNative(Native Method)
04-21 17:00:07.892: E/AndroidRuntime(278): at java.lang.reflect.Method.invoke(Method.java:521)
04-21 17:00:07.892: E/AndroidRuntime(278): at android.view.View$1.onClick(View.java:2067)
04-21 17:00:07.892: E/AndroidRuntime(278): ... 11 more
04-21 17:00:07.892: E/AndroidRuntime(278): Caused by: java.lang.NullPointerException
04-21 17:00:07.892: E/AndroidRuntime(278): ... 15 more
04-21 17:04:37.812: I/Process(278): Sending signal. PID: 278 SIG: 9
我認爲這是因爲在主活性狀況,這些線TY:
String summary = newNote.getSummary();
String details = newNote.getDetails();
,我嘗試從newNote獲取值,而它的空 但爲什麼無效?
-------------------------------------------- - - - - - - - -編輯 - - - - - - - - - - - - - - - - - -------------------------
我試過onActivityResult解決方案,但我仍然有一個NullPointerException這行:
Note newNote = getIntent().getExtras().getParcelable("myNewNote");
下面是代碼: 在主要活動:
public void onClick(View view) {
adapter = (ArrayAdapter<Note>) getListAdapter();
switch (view.getId()) {
case R.id.add:
// Call AddActivity to specify content of the note fields to be
// added to the DB
intentToAdd = new Intent(this, AddActivity.class);
startActivityForResult(intentToAdd, 0);
break;
則:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
Log.i("aaaaa", "Dans le onActivityResult ");
if (resultCode == RESULT_OK) {
Log.i("aaaaa", "RESULT_OK ");
// get the extras from AddActivity
Note newNote = getIntent().getExtras().getParcelable("myNewNote");
if (newNote != null) {
String summary = newNote.getSummary();
String details = newNote.getDetails();
// Save the new note in the database
note = datasource.createNote(summary, details);
adapter.add(note);
} else {
Log.i("aaaaa", "newNote est null !!!!!!!! ");
}
} else {
Log.i("aaaaa", "RESULT_PAS OK ");
}
}
並在AddActivity:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
Log.i("aaaaa", "Dans le onCreate de AddActivity");
butAdd = (Button) findViewById(R.id.buttonAjout);
intentToMain = new Intent(this, MainActivity.class);
butAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("aaaaa", "Dans le onClick du bouton ajout");
EditText summary = ((EditText) findViewById(R.id.editTextSum));
EditText details = ((EditText) findViewById(R.id.editTextDet));
Note note =new Note(summary.toString(),details.toString());
intentToMain.putExtra("myNewNote", note);
setResult(RESULT_OK);
finish();
}
});
您可以通過查看Logcat來了解爲什麼發生崩潰的公平想法。 – 2013-04-21 17:03:44
你錯了。 startActivity啓動一個活動,但它不會等待它再次啓動主要活動。使用startActivityWithResult,並將你的Note處理放在主Activity的onActivityResult中。 – njzk2 2013-04-21 17:15:44
MainActivity是您的網上活動嗎? – Sanghita 2013-04-21 17:19:12