对话框继续抛出“无法添加窗口 - 令牌null不适用于应用程序”

时间:2012-10-11 15:18:05

标签: android-layout android-webview android-dialog android-context

我正在尝试创建一个对话框,其中包含带有webview的relativelayout。所以我创建了这个showInterstitial方法来显示对话框。但是它会抛出“无法添加窗口 - 令牌空值不适用于应用程序”错误。

public void showInterstitial() {
    this.isInterstitial = true;
    openInterstitial(super.getContext(), showCloseButtonTime,
            autoCloseInterstitialTime, this);
}

private void openInterstitial(Context context, Integer showCloseButtonTime,
        Integer autoCloseInterstitialTime, InterstitialView adView) {

    if (showCloseButtonTime == null || showCloseButtonTime < 0)
        showCloseButtonTime = 0;
    if (autoCloseInterstitialTime == null || autoCloseInterstitialTime < 0)
        autoCloseInterstitialTime = 0;

    final Dialog dialog;

    dialog = new Dialog(context,
            android.R.style.Theme_NoTitleBar_Fullscreen);

    adView.dialog = dialog;

    if (adView.getParent() != null) {
        ((ViewGroup) adView.getParent()).removeAllViews();
    }

    final RelativeLayout mainLayout = new RelativeLayout(context);
    mainLayout.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT));
    adView.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT));
    mainLayout.addView(adView);

    Button closeButton = new Button(context);
    closeButton.setText("Close");
    RelativeLayout.LayoutParams closeParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    closeParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,
            RelativeLayout.TRUE);
    closeParams.addRule(RelativeLayout.CENTER_HORIZONTAL,
            RelativeLayout.TRUE);
    closeButton.setLayoutParams(closeParams);
    closeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

    dialog.setContentView(mainLayout);
    dialog.show();
}

0 个答案:

没有答案