문제 설명 :onBackPressed가 recreate()를 호출하지 않음
내 앱의 주요 활동 및 활동 설정이 앱에 있습니다. 각 설정 활동을 닫으면 기본 활동이 다시 생성됩니다.
메인 액티비티는 작업 표시 줄의 홈 버튼과 하드웨어 또는 팝업 표시 줄의 두 위치에서 finish()를 통해 닫을 수 있습니다 (앱 종료).
홈 버튼은 문제없이 작동하지만 처음에는 뒤로 버튼이 작동하지만 사용자가 설정 활동에 있고 종료 한 다음 주 활동으로 돌아 오면 onBackPressed() 기능이 더 이상 호출되지 않습니다.
레크 리 에이션을 삭제하면 홈 버튼처럼 뒤로 버튼이 제대로 작동합니다.
그래서 누군가가 왜 뒤로 버튼으로 엉망으로 만드는지 알고 있습니까?
감사합니다. 관련 코드의
부품 :
주요 활동 :
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Open Settings Activity
case R.id.menuSettings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivityForResult(intent, REQUEST_SETTINGS);
return true;
// Close the App
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case REQUEST_SETTINGS:
// Recreate activity
recreate();
break;
}
}
// Close App on Back Button Click
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
} 나는 해결책을 발견
런처 모드에 대해 읽어야 할 수도 있습니다. https://developer.android.com/guide/topics/manifest/activity-element.html#lmode – Raghunandan
재 작성된 코드는 무엇입니까? –
나는 또한이 문제가있다. 그러나 모든 장치에있는 것은 아닙니다! 모든 에뮬레이터 (테스트 한)에서 올바르게 작동합니다. 물리적 장치가 아닙니다. 나는 무슨 일이 일어나고 있는지 이해할 수 없다. –