Theme.Dialog 스타일을 사용하는 활동이있어 다른 활동 위에 떠있는 창입니다. 그러나 백그라운드 활동에서 대화 상자 창 외부를 클릭하면 대화 상자가 닫힙니다. 이 행동을 어떻게 막을 수 있습니까?
답변
이것은 당신을 도울 수 있습니다. 외부 이벤트를 처리하는 방법입니다.
창 밖에서 터치했을 때 활동과 같은 대화 상자를 취소하는 방법은 무엇입니까?
이벤트를 잡아서 아무것도하지 않으면 폐막을 막을 수 있다고 생각합니다. 그러나 이상한 생각이 무엇인지, 활동 대화 상자의 기본 동작을해야한다는 것입니다 하지 당신이 외부 터치하면 자체를 닫습니다.
(PS : 코드는 WindowManager.LayoutParams를 사용합니다)
답변
뒤로 키를 눌렀을 때 대화 상자가 사라지는 것을 방지하려면 이것을 사용하십시오
dialog.setCancelable(false);
외부 터치에서 대화 상자가 사라지는 것을 방지하려면 이것을 사용하십시오.
dialog.setCanceledOnTouchOutside(false);
답변
실제로 가지고있는 것은 활동 (대화 상자처럼 보이더라도)이므로 setFinishOnTouchOutside(false)
배경 활동을 클릭 할 때 활동을 유지하려면 활동에서 전화해야합니다 .
편집 : 이것은 안드로이드 API 레벨 11 이상에서만 작동합니다
답변
나를 위해 일한 DialogFragment
것은 취소 할 수없는 세트 를 만드는 것이 었습니다 .
dialog.setCancelable(false);
답변
onCreate에서 대화 상자를 활동으로 사용할 때 이것을 추가하십시오.
setFinishOnTouchOutside(false);
답변
API 10이 높은 경우 외부를 터치하면 대화 상자가 사라지고 API 11보다 낮은 경우 대화 상자가 사라지지 않습니다. 이를 방지하려면 다음을 수행해야합니다.
에서 styles.xml
:<item name="android:windowCloseOnTouchOutside">false</item>
또는
에서 onCreate()
방법을 사용합니다 :this.setFinishOnTouchOutside(false);
참고 : API 10 이하의 경우이 방법은 적용되지 않으며 필요하지 않습니다.
답변
대화 상자를 취소 가능으로 설정하면 충분하며 경고 대화 상자 외부를 터치하거나 뒤로 버튼을 클릭하면 경고 대화 상자가 사라집니다. 따라서 이것을 사용하십시오 :
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();
