Вызов всплывающего окна Android из oncreate

private void loadingPopup() {
    LayoutInflater inflater = this.getLayoutInflater();
          View layout = inflater.inflate(R.layout.loading_dialog, null);

        PopupWindow windows = new PopupWindow(layout , 300,300,true);
       windows.setFocusable(false);
          windows.setTouchable(true); 
          windows.setOutsideTouchable(true);
          windows.showAtLocation(layout,Gravity.CENTER, 0, 0);

}

при вызове метода loadingPopup() из oncreate() возникает исключение .. пожалуйста, помогите мне


person abed    schedule 06.02.2013    source источник
comment
можешь выложить лог кота?   -  person Nermeen    schedule 06.02.2013
comment
вам нужно опубликовать, что такое исключение?   -  person Anuj    schedule 06.02.2013
comment
02-06 15:36:12.140: E/AndroidRuntime(17670): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 02-06 15:36:12.140: E/AndroidRuntime( 17670): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 02-06 15:36:12.140: E/AndroidRuntime(17670): в dalvik.system.NativeStart.main(собственный метод) 02-06 15:36:12.140: E/AndroidRuntime(17670): причина: android.view.WindowManager$BadTokenException: невозможно добавить окно -- токен null недействителен; ваша активность запущена?   -  person abed    schedule 06.02.2013
comment
@abed : опубликуйте свой полный код активности   -  person ρяσѕρєя K    schedule 06.02.2013
comment
мой вопрос о том, как вызвать всплывающее окно без кнопки (я хочу загрузить активность)   -  person abed    schedule 06.02.2013


Ответы (1)


Вы пытаетесь отобразить всплывающее окно еще до того, как будет отображено окно активности. С помощью метода post мы можем дождаться завершения всех необходимых методов жизненного цикла запуска.

Попробуй это :

private void loadingPopup() {
    LayoutInflater inflater = this.getLayoutInflater();
    final View layout = inflater.inflate(R.layout.loading_dialog, null);

    final PopupWindow windows = new PopupWindow(layout , 300,300,true);
    windows.setFocusable(false);
    windows.setTouchable(true); 
    windows.setOutsideTouchable(true);
    layout.post(new Runnable() {
        public void run() {
            windows.showAtLocation(layout,Gravity.CENTER, 0, 0);
        }
    });
}
person Sourab Sharma    schedule 06.02.2013