我有一個活動拒絕關閉第一次完成()被調用。我最初在活動中放置了一個取消按鈕,但後來我注意到,當我使用「後退」按鈕時,它也表現出相同的行爲。它可以這樣描述: 1.活動打開,並填入適當的數據(來自上一活動的列表視圖)。 2.按Back按鈕,所有字段都清除數據,但不會將用戶返回到原始活動。 3.再次按返回按鈕,用戶返回到原來的活動。Android - 完成()重新啓動當前活動
我可以發佈代碼,但我不確定問題出在當前活動還是主要活動中。我可以提到,切換到使用上下文菜單打開活動。
更新: 好吧,看起來這些建議都是正確的,主要活動確實啓動了2個版本的編輯活動。現在我只是想弄明白爲什麼。當我切換到列表項選項的上下文菜單時,我注意到發生了這種情況。然而,添加按鈕是一個菜單項。這裏是相關的代碼:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
// add(int groupId, int itemId, int order, int titleRes)
menu.add(0, INSERT_ID, 0, R.string.menu_insert);
menu.add(0, SETTINGS_ID, 1, R.string.sharedPrefButton);
menu.add(0, COMMON_DESC_ID, 2, R.string.commonDescButton);
menu.add(0, RESET_ID, 3, R.string.menu_reset);
return true;
}
/*
* This is going to handle the "Add Expenditure" menu item. When this is selected, the
* onOptionsItemSelected() method will be called with the item.getId() set to INSERT_ID
* (the constant we used to identify the menu item).
*/
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
case INSERT_ID:
createExpenditure();
break;
case SETTINGS_ID:
manageSharedPrefs();
break;
case COMMON_DESC_ID:
manageCommonDesc();
break;
}
return super.onMenuItemSelected(featureId, item);
}
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, DELETE_ID, 0, R.string.menu_delete);
menu.add(0, EDIT_ID, 0, R.string.menu_edit);
}
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int itemId = item.getItemId();
switch(itemId) {
case DELETE_ID:
mDbHelper.deleteExpenditure(info.id);
fillData();
break;
case EDIT_ID:
Intent i = new Intent(this, ExpenditureEdit.class);
i.putExtra(ExpendituresDbAdapter.KEY_ROWID, info.id);
startActivityForResult(i, ACTIVITY_EDIT);
break;
}
return super.onContextItemSelected(item);
}
請檢查是否有在上次活動中發佈的簡歷或開始方法可能會再次啓動活動......或者可能是您的活動在第一個地方推出了兩次... –