#android #popup #view
Раньше создавал уже popup все работало, а на этом минимальном коде нет. Никак не пойму в чем дело, подскажите. Нажатие на кнопку срабатывает, но не работает сама кнопка, т.е. нет анимации нажатия, тоже самое и с editText. public class MainActivity extends Activity { LinearLayout lay; PopupWindow popup; Button btnOpenPopup, btnClosePop; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnOpenPopup = (Button) findViewById(R.id.popupbutton); btnOpenPopup.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { popup.showAsDropDown(v, 30, 60); } }); View window = getLayoutInflater().inflate(R.layout.popup, null); Button b = (Button) window.findViewById(R.id.btnPopup); popup = new PopupWindow(window, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); btnClosePop = (Button) window.findViewById(R.id.btnPopup); btnClosePop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.d("tag", "pressed"); } }); } } Лейаут самый простейший: POPUP:MAIN:
Ответы
Ответ 1
Насколько я понял, в строках public void onClick(View v) { popup.showAsDropDown(v, 30, 60); } не инициализирована переменная popup. Странно, что код работал и не выдавал ошибку. UPDATE Andreich, согласен, инициализация идёт ниже по тексту. Сегодня тоже долго мучался, нашёл много граблей с этим PopupWindow. В частности, при открытии по кнопке у меня другой код. @Override public void onClick(View view) { if (popupWindow == null) { // здесь инициализация popupWindow и его отображение. } if (!popupWindow.isShowing()) { popupWindow.showAsDropDown(txtSomeElement, 0, 0); } }
Комментариев нет:
Отправить комментарий