2015-01-28 2 views
0

У меня есть всплывающее окно, которое вызывается из прослушивателя в моем фрагменте. Перед тем, как он был вызван с помощью кнопки, нажмите и отобразится сразу. Тем не менее, после перемещения метода, который создает его для пользовательского прослушивателя, он больше не всплывает мгновенно. Но скорее, только после события клика или прокрутки происходит в любом месте экрана. Я предполагаю, что экран нужно обновить, чтобы показать всплывающее окно? Вот мой код Создание:всплывающее окно Android не отображается?

/***POP UP WINDOW CODE***/ 

PopupWindow popupMessage; 
PopupWindow pw; 

@SuppressLint("NewApi") 
private void popupInit(){ 

     LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     //Get screen dimensions to set the window size 
     Display display = getActivity().getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     int width = size.x; 
     int height = size.y; 

     final View layout = inflater.inflate(R.layout.add_interview, null, false); 

     // create a 300px width and 470px height PopupWindow 
     pw = new PopupWindow(layout, (int) (width*(0.8)), (int) (height*(0.8)), true); 

     // display the popup in the center 
     layout.post(new Runnable() { 
       public void run() { 
       pw.showAtLocation(layout, Gravity.CENTER, 0, 0); 
       pw.update(0, 0, pw.getWidth(), pw.getHeight()); 
       } 
     }); 
} 
+0

Вы пробовали запустить его вне Runnable? –

+0

Это сработало! Вы знаете, почему это может вызвать проблемы? – Will

+0

Обычно я не работаю с Runnable, но я считаю, что они используются для задержки, и это может быть отсутствие обработчика. Вы пытаетесь отложить представление? –

ответ

3

Если вы не хотите, чтобы задержать всплывающее окно просто сделать следующее:

pw.showAtLocation(layout, Gravity.CENTER, 0, 0); 
pw.update(0, 0, pw.getWidth(), pw.getHeight()); 
Смежные вопросы