AlertDialog.Builder 클래스를 사용해서 View를 넣어주는 방식도 있었지만, 문제는 Dialog창에서 프로그램 로직을 돌려야 할 경우 어떻게 처리해야 하는가에 대한 부분이였습니다.
예를 든다면 팝업창이 뜨면서 서버로부터 데이터를 받아와서 팝업창의 내용을 뿌려야 한다던가 하는 식의 처리였죠.
웹에서 자료를 찾다 보니 딱 제가 원하는 방식이 있어서 정리해 봅니다.
먼저 팝업으로 사용할 Activity를 하나 만들어야 합니다.
그리고 AndroidMenifest.xml에서 해당 클래스를 Activity로서 등록하는 Attribute에android:theme="@android:style/Theme.Dialog" 라는 속성을 추가해 줍니다.
- <ACTIVITY
- android:name="Activity 클래스 이름"
- android:theme="@android:style/Theme.Dialog"></ACTIVITY>
그런 다음 팝업창으로 동작할 해당 Activity 클래스의 소스파일에 onApplyThemeResource 라는 메소드를 재정의 해 줍니다.
- @Override
- protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first)
- {
- super.onApplyThemeResource(theme, resid, first);
- theme.applyStyle(android.R.style.Theme_Panel, true);
- }
이제 이 부모창에서 이 Activity를 Intent를 통해서 startAcvity() 메소드로 호출하면 팝업창으로서 동작합니다. 물론 페이지의 디자인이 화면의 전체 사이즈보다 작아야 하겠죠.
startActivityForResult() 메소드를 활용하면 팝업창으로 부터의 결과를 부보창이 받아볼 수 도 있게 됩니다.
출처 : http://hoyanet.pe.kr/544
댓글 없음:
댓글 쓰기