PopupWindow无法在InnerClass的onClick()中显示

时间:2013-07-08 17:05:32

标签: android popupwindow

人。我在Android中有关于PopupWindow的问题 我有2个按钮,单击其中一个将显示一个popupWindow,它是外部类中的成员变量     popupWindow的内容和布局是不同的     我在onClick方法中更新了popipWindow的内容,如下所示:

    bt1.setOnClickListener(new OnClickListener{       
        onClick(View v){
            mPopupWin.setContentView(R.layout.layout_a);
    });

    bt2.setOnClickListener(new OnClickListener{       
        onClick(View v){
            mPopupWin.setContentView(R.layout.layout_b);
    });

当我第一次点击其中任何一个时,它工作,popupWindow显示,但当我点击另一个时,popupWindow没有显示(mPopupWin之前已被正确解散,并且contentView不是NULL,并且宽度/高度不是0,我检查过......) 当我再次单击第二个按钮时,popupWindow正常显示。 然后我尝试在doInBackground中使用AsycnTask来setContentView(),并在onPostExecute()中显示popupWindow,一切正常。

我可以通过这种方式实现我的目的,但我仍然想知道第一种方式的问题是什么 希望你的帮助,谢谢你:)

1 个答案:

答案 0 :(得分:1)

我没有机会测试它,但尝试更改代码以使用update()

 bt1.setOnClickListener(new OnClickListener{       
    onClick(View v){
        mPopupWin.setContentView(R.layout.layout_a);
       mPopupWin.update();
});

bt2.setOnClickListener(new OnClickListener{       
    onClick(View v){
        mPopupWin.setContentView(R.layout.layout_b);
        mPopupWin.update();
});

According to the Docs

  

如果在弹出窗口显示时调用此方法无效。

在决定拨打update()时,您可能需要查看isShowing()是否