检查弹出窗口是否打开时出错

时间:2015-12-29 00:21:22

标签: android popupwindow

我的应用程序不断运行,因此我可以同时打开很多弹出窗口。我试图下面的代码:

 if (pwindo.isShowing())
            {
                pwindo.dismiss();
            }

在我的代码中标有**********************************的地方:

public class travel extends AppCompatActivity {
    private PopupWindow pwindo;
    Handler mHandler = new Handler();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.travel_layout2);
 mHandler.postDelayed(runnable, 100);
    }



 private Runnable runnable = new Runnable() 
 {
        public void run() 
        {
            for (int i=begin;i<=end;i++)
            {
                if ((gps > Float.parseFloat(words[2+i*6])-0.11)&& (counter==i)&&(gps < Float.parseFloat(words[2+i*6])))
                {
                    if ((words[3+i*6]!= null && !words[3+i*6].isEmpty())||(number==end)||(count>0)) {
                        initiatePopupWindow();
                    }
                }
            }
            mHandler.postDelayed(runnable, 100);
            if (gps > latEnd)
            {
                mHandler.removeCallbacks(runnable);
            }
       }
    };





//****************************************************
    private void initiatePopupWindow() 
    {
//****************************************************
        try 
        {
//****************************************************
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View layout = inflater.inflate(R.layout.screen_popup,(ViewGroup) findViewById(R.id.popup_element));
            pwindo = new PopupWindow(layout, 700, LayoutParams.FILL_PARENT, true);
//****************************************************
            pwindo.setBackgroundDrawable(new BitmapDrawable());
        //****************************************************
            pwindo.showAtLocation(layout, Gravity.CENTER, 0, 0);
            } catch (Exception e) {
                e.printStackTrace();
            }
         }   

但它在任何情况下都无效。谁能告诉我我做错了什么? (inOncreate函数我调用runnable函数,它运行每隔几秒钟,如果满足某些条件,则调用initiatePopupWindow()函数以打开弹出窗口)

2 个答案:

答案 0 :(得分:0)

在调用initiatePopupWindow()之前检查pwindo是否已存在。

你可能会弹出自己的弹出窗口,pwindo变量只存储最新的地址。

答案 1 :(得分:0)

您可以为其设置标记。 等;

if(flag)
{
initiatePopupWindow();

flag==false;
}