在我正在處理的小應用程序中,我需要能夠從數據庫表中選擇一條記錄。當ListActivity完成時未調用onActivityResult
爲了做到這一點,我創建的ListActivity
一個子類,GameListScreen
,它顯示的記錄,並覆蓋onListItemClick()
如下:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Game g = (Game)getListView().getItemAtPosition(position);
Intent intent = new Intent();
intent.putExtra("id", g.getId());
setResult(RESULT_OK, intent);
finish();
}
然後,爲了發動我的活動,我有這在我的MainMenu
活動;一個onClick
處理器的Button
:
public void openGameClick(View view) {
Intent intent = new Intent(this, GameListScreen.class);
startActivityForResult(intent, -1);
}
,並得到的結果,也是在MainMenu
類:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
// result is handled here
}
}
一切工作完全按預期 - 在ListActivity開始,我可以看到我的記錄,當我選擇一個,onListItemClick正在運行 - 但onActivityResult
沒有被調用,我不知道爲什麼。在另一個項目中,我遵循相同的基本原則,並在那裏工作。
我在這裏錯過了什麼?我相信這是一個簡單的錯誤,但我無法發現它。
我上傳了my project以防萬一。我正在使用Android 2.2進行測試,因爲這是我的手機正在使用的。
確實,將它設置爲0的確有竅門。但我不確定爲什麼,因爲看着我的另一個項目,我在那裏使用了-1,但也許我忘了從我的另一臺計算機上對我進行更改。噢,很好 - 謝謝你們的幫助,現在我終於可以繼續前進。 – 2011-03-13 14:02:02
我有同樣的問題,並傳遞一個負值作爲我的requestCode。立刻改變爲requestCode的正值,這就是訣竅。 – 2012-01-15 05:01:06