0

私はこのカスタムダイアログを持っています:

public class MyProgressDialog extends Dialog {

    public MyProgressDialog(Context context) {
        super(context);
    }

    public static MyProgressDialog show(Context context) {
        MyProgressDialog dialog = new MyProgressDialog(context);

        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.progress);
        dialog.getWindow().setBackgroundDrawableResource(
                android.R.color.transparent);
        dialog.show();
        return dialog;
    }

    public static void dismiss(Context context) {
        MyProgressDialog dialog = new MyProgressDialog(context);
        dialog.dismiss();
    }

}

表示されます

    protected void onPreExecute() {
        MyProgressDialog.show(ItemsActivity.this);
        }

しかし、次のように却下しません:

MyProgressDialog.dismiss(ItemsActivity.this);

誰かが理由を知っていますか?

4

1 に答える 1

2

で作成したダイアログではなく、新しいダイアログを作成して閉じていますshow()。作成された最新のダイアログへの参照を保持し、必要に応じてそれを閉じることができます。例えば:

public static MyProgressDialog show(Context context) {
    MyProgressDialog dialog = new MyProgressDialog(context);

    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.progress);
    dialog.getWindow().setBackgroundDrawableResource(
            android.R.color.transparent);
    dialog.show();
    staticVariable = dialog;
    return staticVariable;
}

public static void dismiss(Context context) {
    staticVariable.dismiss();
}

ただし、これは理想的な設計とは思えません。

于 2012-10-19T14:16:49.357 に答える