Theme.Dialog 스타일을 사용하는 활동이있어 다른 활동 위에 떠있는 창입니다. 그러나 백그라운드 활동에서 대화 상자 창 외부를 클릭하면 대화 상자가 닫힙니다. 이 행동을 어떻게 막을 수 있습니까?
Theme.Dialog 스타일을 사용하는 활동이있어 다른 활동 위에 떠있는 창입니다. 그러나 백그라운드 활동에서 대화 상자 창 외부를 클릭하면 대화 상자가 닫힙니다. 이 행동을 어떻게 막을 수 있습니까?
답변:
이것은 당신을 도울 수 있습니다. 외부 이벤트를 처리하는 방법입니다.
창 밖에서 터치했을 때 활동과 같은 대화 상자를 취소하는 방법은 무엇입니까?
이벤트를 잡아서 아무것도하지 않으면 폐막을 막을 수 있다고 생각합니다. 그러나 이상한 생각이 무엇인지, 활동 대화 상자의 기본 동작을해야한다는 것입니다 하지 당신이 외부 터치하면 자체를 닫습니다.
(PS : 코드는 WindowManager.LayoutParams를 사용합니다)
뒤로 키를 눌렀을 때 대화 상자가 사라지는 것을 방지하려면 이것을 사용하십시오
dialog.setCancelable(false);
외부 터치에서 대화 상자가 사라지는 것을 방지하려면 이것을 사용하십시오.
dialog.setCanceledOnTouchOutside(false);
AlertDialog
이 외부와 접촉 하지 못하게하는 방법을 찾고 있다고 생각 합니다.이 답변이 제공합니다.
setCancelable(false)
실제로 가지고있는 것은 활동 (대화 상자처럼 보이더라도)이므로 setFinishOnTouchOutside(false)
배경 활동을 클릭 할 때 활동을 유지하려면 활동에서 전화해야합니다 .
편집 : 이것은 안드로이드 API 레벨 11 이상에서만 작동합니다
onBackPressed()
그것의 몸에 아무것도하지 않고
나를 위해 일한 DialogFragment
것은 취소 할 수없는 세트 를 만드는 것이 었습니다 .
dialog.setCancelable(false);
대화 상자를 취소 가능으로 설정하면 충분하며 경고 대화 상자 외부를 터치하거나 뒤로 버튼을 클릭하면 경고 대화 상자가 사라집니다. 따라서 이것을 사용하십시오 :
setCancelable(false)
그리고 다른 기능은 더 이상 필요하지 않습니다.
dialog.setCanceledOnTouchOutside(false);
임시 대화 상자를 만들고이 코드 줄을 작성해야한다면 다음 예를 참조하십시오.
new AlertDialog.Builder(this)
.setTitle("Trial Version")
.setCancelable(false)
.setMessage("You are using trial version!")
.setIcon(R.drawable.time_left)
.setPositiveButton(android.R.string.yes, null).show();
이 코드를 사용하십시오.
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setCancelable(false);
Dialog dialog = new Dialog(context)
dialog.setCanceledOnTouchOutside(true);
//use this to dismiss the dialog on outside click of dialog
dialog.setCanceledOnTouchOutside(false);
//use this for not to dismiss the dialog on outside click of dialog.
dialog.setCancelable(false);
//used to prevent the dismiss of dialog on backpress of that activity
dialog.setCancelable(true);
//used to dismiss the dialog on onbackpressed of that activity
간단히,
alertDialog.setCancelable(false);
사용자가 대화 상자 외부를 클릭하지 못하게합니다.
나는 이것을 onCreate ()에서 사용하며 모든 버전의 Android에서 작동하는 것 같습니다. 5.0 및 4.4.x에서 테스트되었지만 Gingerbread에서는 테스트 할 수 없습니다. Samsung 장치 (GB 1을 실행하는 주)는 기본적으로 다음과 같은 방식으로 작동합니다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
setFinishOnTouchOutside(false);
}
else
{
getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
}
super.onCreate(savedInstanceState);
alert.setCancelable(false);
alert.setCanceledOnTouchOutside(false);
나는 이것이 당신을 도울 것이라고 생각합니다.
onCancelListener를 구현하는 다른 액션을 할당 할 수도 있습니다.
alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialogInterface) {
//Your custom logic
}
});
builder.setCancelable (false);
공공 무효 멘사 제 (View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("¿Quieres ir a el Menú principal?");
builder.setMessage("Al presionar SI iras a el menú y saldras de la materia.");
builder.setPositiveButton("SI", null);
builder.setNegativeButton("NO", null);
builder.setCancelable(false);
builder.show();
}
이것은 모든 질문에 대한 완벽한 답변입니다 ... 안드로이드 코딩을 즐기시기 바랍니다
new AlertDialog.Builder(this)
.setTitle("Akshat Rastogi Is Great")
.setCancelable(false)
.setMessage("I am the best Android Programmer")
.setPositiveButton("I agree", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create().show();