2010-03-04 5 views
4

간단한 모양과 느낌으로 화면을 형성하는 사용자 정의 대화 상자를 구현하고 있습니다. 나는 일부 텍스트와 R.에서 아이콘을로드하는 XML 레이아웃을 가지고있다. 그러나 showDialog (int)가 호출 될 때 강제로 닫기를 얻는다. http://developer.android.com/intl/de/guide/topics/ui/dialogs.htmlAndroid 사용자 정의 대화 상자 닫기

코드는 다음과 같다 :

@Override 
protected Dialog onCreateDialog(int id) { 
    Dialog dialog; 
     switch(id) { 
     case DIAG_ABOUT: 
     dialog = new Dialog(getApplicationContext()); 
     dialog.setContentView(R.layout.aboutdialog); 
     dialog.setTitle(R.string.about_title); 
     dialog.setOwnerActivity(this); 
     break; 
     default: 
      dialog = null; 
     } 
     return dialog; 
} 

DIAG_ABOUT 로그 고양이는 다음의 추적을 보여줍니다 private static final int DIAG_ABOUT = 0;

다음과 같이 정의된다

내가 dev에 가이드에 따라 지시 사항을 준수
03-04 11:37:08.760: ERROR/AndroidRuntime(726): Uncaught handler: thread main exiting due to uncaught exception 
03-04 11:37:08.780: ERROR/AndroidRuntime(726): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.view.ViewRoot.setView(ViewRoot.java:429) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:178) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.app.Dialog.show(Dialog.java:231) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.app.Activity.showDialog(Activity.java:2407) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at uk.me.cpearson.runningLate.Home.onOptionsItemSelected(Home.java:143) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.app.Activity.onMenuItemSelected(Activity.java:2085) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:820) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:139) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:813) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:519) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.view.View.onTouchEvent(View.java:3828) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.widget.TextView.onTouchEvent(TextView.java:6291) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.view.View.dispatchTouchEvent(View.java:3368) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1691) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1525) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.os.Looper.loop(Looper.java:123) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at android.app.ActivityThread.main(ActivityThread.java:3948) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
03-04 11:37:08.780: ERROR/AndroidRuntime(726):  at dalvik.system.NativeStart.main(Native Method) 

캔 내가 잘못 갈 경우, 내가 SDK 1.5은 사용할 필요가

답변

10

을 사용하고 내가 한 지점 밖으로 당신의 ActivtyDialog하지 Application에 대한 Context있다.

안드로이드는 대화 상자를 표시 할보기를 찾고, Application에는 Activity 의지가 표시됩니다. Application은 실행중인 로케일을 알고 있기 때문에 앱을 묶어 두는 객체로 Context이지만 활동에 의존하여 사용자에게 물건을 표시합니다.

은 교체 :

dialog = new Dialog(getApplicationContext()); 

로 :

dialog = new Dialog(this); 
+1

안드로이드 문서가 잘못된 예를 제공,이 오래 전에 생성 된 티켓, 그러나이 문제가 여전히 해결되지! –

관련 문제