finish()가 처음 호출 될 때 닫는 것을 거부하는 활동이 있습니다. 원래는 Cancel 버튼을 액티비티에 넣었지만, 뒤로 버튼을 사용할 때도 같은 동작을한다는 것을 알았습니다. 다음과 같이 설명 할 수 있습니다. 1. 활동이 열리고 적절한 데이터가 채워집니다 (이전 활동의 목록보기에서 제공됨). 2. 뒤로 단추를 누르면 모든 필드에서 데이터가 지워지지만 사용자는 원래 활동으로 돌아 가지 않습니다. 3. 뒤로 단추를 다시 누르면 사용자가 원래 활동으로 돌아갑니다.Android - Finish()가 현재 활동을 다시 시작합니다.
코드를 게시 할 수 있지만 문제가 현재 활동이나 주 활동에 있는지는 확실하지 않습니다. 컨텍스트 메뉴를 사용하여 활동을 열어 보았습니다.
업데이트 : 이 두 가지 제안이 모두 올바른 것처럼 보입니다. 주요 활동은 실제로 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);
}
확인하시기 바랍니다 이력서에있는 이전 활동 또는 다시 시작하는 활동의 시작 방법에 문제가 있음 ... 또는 처음에 활동이 두 차례 시작된 것일 수도 있습니다 ... –