我試圖修改記事本教程(Notepadv3解決方案),將NoteEdit類賦予的值存入Notepadv3類。我已經成功地在OnListItemClick方法中使用.putExtra將值放入NoteEdit類中,但我努力爲createNote方法執行此操作;當我嘗試創建新筆記時,我正在接近一個力量。關於使用意圖傳遞數據的問題
我敢打賭有一個簡單的解決方案,但我很新的Java & Android,並非常感謝您的幫助。
這裏是在Notepadv3類問題代碼:
private void createNote() {
Intent i = new Intent(this, NoteEdit.class);
i.putExtra("key", 1);
startActivityForResult(i, ACTIVITY_CREATE);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(this, NoteEdit.class);
i.putExtra(NotesDbAdapter.KEY_ROWID, id);
i.putExtra("key", 1);
startActivityForResult(i, ACTIVITY_EDIT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
fillData();
}
下面是在NoteEdit類接收代碼:
mRowId = savedInstanceState != null ? savedInstanceState.getLong(NotesDbAdapter.KEY_ROWID)
: null;
if (mRowId == null) {
Bundle extras = getIntent().getExtras();
mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
: null;
value = extras.getInt("key");
}
我相當確信(mRowId == NULL)當我使用createNote方法時不是這樣,所以getExtras不會被調用。我的一個問題是如何在使用createNote方法時使我的NoteEdit類獲取此值?我對這個新手很抱歉,如果這對你們來說都是一個簡單的問題。
謝謝,
喬
在Eclipse中使用adb logcat,DDMS或DDMS透視圖來查看與「force close」關聯的Java堆棧跟蹤,以查看事件正在炸燬。 – CommonsWare 2010-04-19 13:13:19
是的,我已經看過DDMS角度的logcat,似乎跳出來的是這樣的: 04-19 14:40:05.640:ERROR/AndroidRuntime(18951):未捕獲的句柄:線程主要由於未捕獲的異常而退出 04-19 14:40:05.760:ERROR/AndroidRuntime(18951):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.listview/com.example.listview .NoteEdit}:android.database.CursorIndexOutOfBoundsException:索引0請求,大小爲0 所以這是一個遊標問題?我相信這是與(mRowId == null)不成立。有什麼想法嗎? – 2010-04-19 13:43:40
當您的活動通過'startActivity()'(或'startActivityForResult()'啓動時'savedInstanceState'應該爲'null',就像這裏的情況一樣。因此,如果您在調用'createNote()'時認爲'mRowId'是從'savedInstanceState'設置的,那麼就會有某種東西被嚴重混淆。 – CommonsWare 2010-04-19 13:56:24