当前位置: 移动技术网 > IT编程>移动开发>Android > Android开发解决popupWindow重叠报错问题

Android开发解决popupWindow重叠报错问题

2019年08月02日  | 移动技术网IT编程  | 我要评论

佳佳人体艺术,优秀党员教师先进事迹材料,清朝求生记

在popupwindow里面再弹出popupwindow的时候会报这样的错误

error/androidruntime(888): android.view.windowmanager$badtokenexception: unable to add window -- token android.view.viewroot$w@44ef1b68 is not valid; is your activity running? 

报错的意思大概就是说依赖的activity没了。

解决方法1

不要在当前的popupwindow里面继续show一个popupwindow,应该写一个接口回调到activity里面进行show,

解决方法2

如果只是简单的弹窗提醒的话,把第二次弹出的popupwindows改为toast,

public class verifysuccessdialog extends toast {
  public verifysuccessdialog(context context) {
    super(context);
    //设置toast的view
    setview(layoutinflater.from(context).inflate(r.layout.include_popwindow_verify, null));
    //弹出位置
    setgravity(gravity.center, 0, 0);
    //时长
    setduration(toast.length_short);
  }
}

用的地方就

new verifysuccessdialog(mactivity).show();

解决方法3

第二次弹窗改为dialog,设置dialog的style,在style.xml添加

<style name="verifydialog" parent="@android:style/theme.holo.dialog.noactionbar">
    <item name="android:windowbackground">@drawable/trans</item>
    <item name="android:windowframe">@null</item>
    <item name="android:windowisfloating">true</item>
    <item name="android:backgrounddimenabled">true</item>
    <item name="android:windowsoftinputmode">adjustpan</item>
  </style>

定义一个dialog类

public class verifysuccessdialog extends dialog {
  //用来设置时间自动关闭
  private int showtime;
  public verifysuccessdialog(context context) {
    super(context, r.style.verifydialog);
    setcontentview(r.layout.include_popwindow_verify);
  }
  public int getshowtime() {
    return showtime;
  }
  public void setshowtime(int showtime) {
    this.showtime = showtime;
  }
}

用就直接:

verifysuccessdialog dialog = new verifysuccessdialog(mactivity);

显示的地方

dialog.show();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。如果你想了解更多相关内容请查看下面相关链接

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网