finish()が最初に呼び出されたときに閉じることを拒否するアクティビティがあります。もともとアクティビティに[キャンセル]ボタンを配置していましたが、[戻る]ボタンを使用しても同じ動作をすることに気付きました。これは次のように説明できます。1。アクティビティが開き、適切なデータが入力されます(前のアクティビティのリストビューから取得)。2. [戻る]ボタンを押すと、すべてのフィールドからデータが消去されますが、ユーザーは元のアクティビティに戻りません。3.もう一度[戻る]ボタンを押すと、ユーザーは元のアクティビティに戻ります。
コードを投稿することはできますが、問題が現在のアクティビティにあるのか、メインのアクティビティにあるのかわかりません。コンテキストメニューを使用してアクティビティを開くように切り替えたことに言及できます。
更新:わかりました。これらの提案は両方とも正しかったようです。主なアクティビティは、実際に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);
}