gpt4 book ai didi

android - 为什么我的应用会抛出 PopupWindow BadTokenException 错误?

转载 作者:行者123 更新时间:2023-11-30 02:36:36 26 4
gpt4 key购买 nike

当我的应用程序正在运行时,出现此错误:

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?

我的代码是:

LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.nextround_popup, parent, false);
final PopupWindow popupWindow = new PopupWindow(popupView,(int) (width * .6), (int) (height * .8));
Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.black_gradient));
new Handler().postDelayed(new Runnable(){
public void run() {
popupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);
}
}, 100L);

我在 SO 上找到了一些有用的解决方案,但我没有设法解决它。

最佳答案

此错误的原因是 PopupWindow 显示需要一个 token ,但 View 在 Activity 渲染完成之前不会有 token 。即使你让它延迟。以及 100ms 很短,但如果让它变长,就显得很愚蠢。您可以在方法onWindowFocusChanged 中显示PopupWindow,当Activity 渲染完成时,将调用此方法。如下所示:

class MyActivity extends Activity{
//...
@Override
public void onWindowFocusChanged(boolean hasFocus){
if(hasFocus){
//show your PopupWindow
popupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);
}
}

//...
}

关于android - 为什么我的应用会抛出 PopupWindow BadTokenException 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26444213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com