android.view.WindowManager $ BadTokenException: - всплывающее окно при запуске активности

1

Я искал ответ на это, но большинство из них, похоже, указывает на проблемы getApplicationContext(), но я не использую getApplicationContext(). В основном я пытаюсь открыть всплывающее окно при запуске какой-либо операции, но когда действие начинается, принудительное закрытие с указанной выше ошибкой.

Код im имеет письменность:

protected void onCreate(Bundle paramBundle) {
    super.onCreate(paramBundle);
    setContentView(R.layout.installguides_menu);
    setTitleFromActivityLabel(R.id.title_text);

    btn_Back = (Button) findViewById(R.id.btn_Back);
    btn_Back.setOnClickListener (btn_Back_onClick);

    btn_Ubuntu10Guide   = (Button) findViewById(R.id.btn_Ubuntu10Guide);
    btn_Ubuntu12Guide   = (Button) findViewById(R.id.btn_Ubuntu12Guide);
    btn_BacktrackGuide  = (Button) findViewById(R.id.btn_BacktrackGuide);
    btn_DebianGuide     = (Button) findViewById(R.id.btn_DebianGuide);

    btn_Ubuntu10Guide   .setOnClickListener (btn_Ubuntu10Guide_onClick);
    btn_Ubuntu12Guide   .setOnClickListener (btn_Ubuntu12Guide_onClick);
    btn_BacktrackGuide  .setOnClickListener (btn_BacktrackGuide_onClick);
    btn_DebianGuide     .setOnClickListener (btn_DebianGuide_onClick);

    LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);  
    View popupView = layoutInflater.inflate(R.layout.donation_popup, null);  
             final PopupWindow popupWindow = new PopupWindow(
               popupView, 
               LayoutParams.WRAP_CONTENT,  
                     LayoutParams.WRAP_CONTENT);  

     Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
     btnDismiss.setOnClickListener(new Button.OnClickListener(){

     public void onClick(View v) {
      popupWindow.dismiss();
     }});

     popupWindow.showAsDropDown(btn_Ubuntu10Guide, 50, -30);
}

Надеюсь, что вы, ребята, можете помочь, охотились за часами, чтобы ваша последняя надежда!

  • 0
    Размещать logcat было бы лучше.
Теги:

1 ответ

0
Лучший ответ

Прежде всего я предполагаю, что вам запрещено показывать всплывающее окно onCreate. Он предназначен для инициализации вашего приложения и построения вашего макета, но вы вынуждаете его отображать всплывающее окно.

onStart() - это более подходящее место, чтобы показать его. Переопределите эту функцию и покажите свое всплывающее окно. Если вы предпочитаете делать это в onResume(), обратите внимание, что пользователь увидит это не только при запуске приложения, но и при возврате к нему после перехода к другому действию.

EDIT 2: попробуйте это для создания всплывающего окна onStart или onCreate:

       LayoutInflater inflater = (LayoutInflater)
               this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            PopupWindow pw = new PopupWindow(
               inflater.inflate(findViewById(R.id.popup_layout), null, false), 
               100, 
               100, 
               true);

// delaying popup until after all application initialization is done
    findViewById(R.id.main_page_layout).post(new Runnable() {
       public void run() {
         pw.showAtLocation(findViewById(R.id.main_page_layout), Gravity.CENTER, 0, 0);
       }
    });

Добавьте идентификатор в свою активность и всплывающие макеты, используя

android:id="@+id/main_page_layout"

а также

android:id="@+id/popup_layout"

соответственно, чтобы они соответствовали идентификатору, который вы будете использовать в коде выше.

  • 0
    Просто попробовал это, но все еще получаю ту же ошибку, так что я предполагаю, что это имеет отношение к самому всплывающему коду ».
  • 0
    Попробуйте мое редактирование в методе onStart ().
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню