1

DialogButtonはそれを持っていても、私は却下していません.dismiss()。私のコード:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.iabout);
    // custom dialog
    final Dialog dialog = new Dialog(context);
    dialog.setContentView(R.layout.iabout);


    dialogButton = (Button) dialog.findViewById(R.id.btAboutOK);
    // if button is clicked, close the custom dialog
    dialogButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            dialog.dismiss();
        }
    }); 
}

どんな助けにも感謝します。

4

2 に答える 2

1

ダイアログを使用しないでください。DialogFragmentsを使用してください。メンテナンスがはるかに簡単です。 (プレハニカムの場合は、サポート ライブラリをプロジェクトに追加します)

次に、DialogFragmentクラスで次AlertDialog.BuilderonCreateDialog(Bdl bundle)ように使用します。

public class MyDialogFragment extends DialogFragment {


@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    return new AlertDialog.Builder(getActivity())
            .setIcon(R.drawable.alert_dialog_icon)
            .setTitle(R.string.alert_dialog_custom_title)
            .setPositiveButton(android.R.string.ok,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        ((MyActivity)getActivity()).doPositiveClick();
                    }
                }
            )
            .setNegativeButton(android.R.string.cancel,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        ((MyActivity)getActivity()).doNegativeClick();
                    }
                }
            )
            .create();
}

}

これらの例はここにあります。

ダイアログを使用する古い方法を使用する場合は、少なくともダイアログ ビルダーを使用してください。

次に、上記の例に従って、コールバック メソッドを設定できます。

カスタム レイアウトを使用してカスタム ダイアログを作成する場合は、 を使用するDialogFragmentと、ダイアログのライフサイクルを正しく制御でき、カスタム ボタンdismiss()DialogFragment.

ここに記載されている例を読んでください。

乾杯、クリス

于 2012-08-28T15:05:21.560 に答える
0

この回答https://stackoverflow.com/a/3378859/975959onCreate()によると、問題はメソッド内にダイアログを配置したことが原因である可能性があります。

この回答は向きの変更に関する問題に関するものですが、彼らの回答を検討することは良いかもしれません: ダイアログの実装を

@Override
onPostCreate()

方法。お役に立てれば。

setCancelable(true)また、戻るボタンを使用してダイアログを閉じることができるように追加することもできます

于 2012-08-28T15:04:36.007 に答える