检查弹出 window 是否打开时出错
Error when checking if popup window is open
我的应用程序连续运行,因此我同时打开了很多弹出窗口 windows。我尝试输入以下代码:
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();
}
}
但它在任何情况下都不起作用。谁能告诉我我做错了什么? (在 Oncreate 函数中我调用了 runnable 函数,它每隔几秒运行一次,如果满足某些条件,则调用 initiatePopupWindow() 函数以打开弹出窗口 window)
在调用 initiatePopupWindow() 之前检查 pwindo
是否已经存在。
很可能您的弹出窗口层层叠叠,pwindo
变量仅存储最近弹出窗口的地址。
您可以为其设置标志。
喜欢;
if(flag)
{
initiatePopupWindow();
flag==false;
}
我的应用程序连续运行,因此我同时打开了很多弹出窗口 windows。我尝试输入以下代码:
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();
}
}
但它在任何情况下都不起作用。谁能告诉我我做错了什么? (在 Oncreate 函数中我调用了 runnable 函数,它每隔几秒运行一次,如果满足某些条件,则调用 initiatePopupWindow() 函数以打开弹出窗口 window)
在调用 initiatePopupWindow() 之前检查 pwindo
是否已经存在。
很可能您的弹出窗口层层叠叠,pwindo
变量仅存储最近弹出窗口的地址。
您可以为其设置标志。 喜欢;
if(flag)
{
initiatePopupWindow();
flag==false;
}