如何在PopUpWindow膨胀后显示它

时间:2014-06-20 10:36:20

标签: java android android-popupwindow

我有一个PopUpWindow需要在Activity启动时加载,它使用屏幕的DisplayMetrics以及其他东西。但是,我收到错误"无法添加窗口 - 令牌null无效;你的活动在运行吗?"对于welcome.showAtLocation(popupview2, Gravity.CENTER, 0, 0);行。

如何仅在检索到资源时才显示PopUpWindow?我的PopUpWindow充当启动(因此它可以在onClick上立即淡出),因此窗口必须是用户看到的第一件事。

我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

LayoutInflater inflater = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();

    dpWidth = displayMetrics.widthPixels / displayMetrics.density;

    dpHeight = displayMetrics.heightPixels / displayMetrics.density;

popupview2 = inflater.inflate(R.layout.start_layout, null);

welcome = new PopupWindow(popupview2, (int) dpWidth, (int) dpHeight);
    welcome.setAnimationStyle(R.style.Animation2);

    welcome.showAtLocation(popupview2, Gravity.CENTER, 0, 0);

}

基本上,我可以使用任何类型的onResourcesLoaded"类似的东西吗?所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

调用代码时,系统尚未准备好衡量指标

将所有代码移到此方法中:

@Override
public void onAttachedToWindow() {
    // TODO Auto-generated method stub
    super.onAttachedToWindow();

}

当可以使用所有指标时,将调用此方法,因为活动已完全显示。