Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Не работают простейшие View в PopupWindow

#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:



    


Ответы

Ответ 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); } }

Комментариев нет:

Отправить комментарий