티스토리 뷰
반응형
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to show a dialog to confirm that the user wishes to exit an Android Activity?
안드로이드 액티비티를 종료하려는 사용자에게 "종료하시겠습니까?"라는 대화상자를 보여주려면 어떻게 해야 하나요?
문제 내용
I've been trying to show a "Do you want to exit?" type of dialog when the user attempts to exit an Activity.
액티비티를 종료하려는 사용자가 있을 때 "종료하시겠습니까?" 타입의 대화상자를 표시하려고 노력했습니다.
However I can't find the appropriate API hooks. Activity.onUserLeaveHint()
initially looked promising, but I can't find a way to stop the Activity from finishing.
그러나 적절한 API 훅을 찾을 수 없습니다. Activity.onUserLeaveHint()가 처음에 유망해 보였지만, 액티비티를 종료하지 못하게 하는 방법을 찾을 수 없습니다.
높은 점수를 받은 Solution
In Android 2.0+ this would look like:
안드로이드 2.0 이상에서는 다음과 같이 작성할 수 있습니다:
@Override
public void onBackPressed() {
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Closing Activity")
.setMessage("Are you sure you want to close this activity?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton("No", null)
.show();
}
In earlier versions it would look like:
이전 버전에서는 다음과 같이 작성할 수 있습니다:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Handle the back button
if(keyCode == KeyEvent.KEYCODE_BACK) {
//Ask the user if they want to quit
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(R.string.quit)
.setMessage(R.string.really_quit)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Stop the activity
YourClass.this.finish();
}
})
.setNegativeButton(R.string.no, null)
.show();
return true;
}
else {
return super.onKeyDown(keyCode, event);
}
}
가장 최근 달린 Solution
Just put this code in your first activity
@Override
public void onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.END)) {
drawerLayout.closeDrawer(GravityCompat.END);
}
else {
// if your using fragment then you can do this way
int fragments = getSupportFragmentManager().getBackStackEntryCount();
if (fragments == 1) {
new AlertDialog.Builder(this)
.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
})
.setNegativeButton("No", null)
.show();
} else {
if (getFragmentManager().getBackStackEntryCount() > 1) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
}
}
출처 : https://stackoverflow.com/questions/2257963/how-to-show-a-dialog-to-confirm-that-the-user-wishes-to-exit-an-android-activity
반응형
'개발 > 안드로이드' 카테고리의 다른 글
안드로이드에서 서비스에서 액티비티를 시작하는 방법 (0) | 2023.02.23 |
---|---|
java.net.SocketException: socket failed: EPERM (Operation not permitted) 에러 수정하기 (0) | 2023.02.22 |
어떤 동작을 클릭했을 때 알림(notification)을 제거하기 (0) | 2023.02.21 |
Android WebView에서 JavaScript alert 동작하지 않는 문제 (0) | 2023.02.21 |
SharedPreferences.onSharedPreferencesChangeListener가 일관되게 호출되지 않는 문제 (0) | 2023.02.21 |
댓글
공지사항
최근에 올라온 글