Может кто-нибудь заставить этот пользовательский AlertDialog действительно работать? - PullRequest
1 голос
/ 20 октября 2011

Я задал еще один вопрос о пользовательском AlertDialog здесь .

Затем я щелкнул свой путь к этому пользовательскому AlertDialog (найдено здесь ):

import android.app.AlertDialog;
import android.content.Context;
import android.webkit.WebView;

/**
 * Display a simple about dialog.
 */
public class AboutDialog extends AlertDialog {

    protected AboutDialog(Context context) {
        super(context);
        setContentView(R.layout.about_dialog);

        setTitle(R.string.about_title);
        setCancelable(true);

        WebView webView = (WebView) findViewById(R.id.webview);
        webView.loadData("Written by Cédric Beust (<a href=\"mailto:cedric@beust.com\">cedric@beust.com)", "text/html", "utf-8");
    }

}

Я изменил это так:

import android.app.AlertDialog;
import android.content.Context;
import android.webkit.WebView;

/**
 * Display a simple about dialog.
 */
public class AboutDialog extends AlertDialog {

    protected AboutDialog(Context context) {
        super(context);
        setTitle("Test");
        setCancelable(true);
        setContentView(R.layout.paus);
    }
}

, а затем попытался использовать его, например:

AboutDialog ad = new AboutDialog(getApplicationContext());
ad.show();

Но я получаю эту ошибку:

android.util.AndroidRuntimeException: requestFeature() must be called before adding content
    at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:181)
    at com.android.internal.app.AlertController.installContent(AlertController.java:206)
    at android.app.AlertDialog.onCreate(AlertDialog.java:251)
    at android.app.Dialog.dispatchOnCreate(Dialog.java:307)
    at android.app.Dialog.show(Dialog.java:225)
    at TestPackage.MainActivity$5.onClick(MainActivity.java:382)
    at android.view.View.performClick(View.java:2538)
  etc...

Так что я хотел бы знать, почему это происходит.

===================== РЕДАКТИРОВАТЬ ========================== 0

Согласно приведенным ниже советам, я изменил код так, чтобы он выглядел следующим образом:

import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.webkit.WebView;

/**
 * Display a simple about dialog.
 */
public class AboutDialog extends AlertDialog {

    protected AboutDialog(Context context) {
        super(context);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.paus);

    }
}

Но вместо этого я получаю BadTokenException .

Ответы [ 3 ]

0 голосов
/ 20 октября 2011

переопределить при создании метода altertdialog и вызвать следующие методы в переопределенном методе oncreate

 setContentView(R.layout.paus);

это решит вашу проблему.

0 голосов
/ 20 октября 2011

почему бы вам не добавить заголовок (текстовое представление) в R.layout.param, а также вы можете добавить кнопки, и тогда все будет показано

0 голосов
/ 20 октября 2011

setContentView () должен быть вызван перед setTitle () ...

...