Android DialogFragmentとダイアログandroid


Answers

YesNoDialogやOkDialogのような一般的なDialogFragmentサブクラスを作成し、アプリケーションで多くのダイアログを使用する場合はタイトルとメッセージを渡すことができます。

public class YesNoDialog extends DialogFragment
{
    public static final String ARG_TITLE = "YesNoDialog.Title";
    public static final String ARG_MESSAGE = "YesNoDialog.Message";

    public YesNoDialog()
    {

    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        Bundle args = getArguments();
        String title = args.getString(ARG_TITLE);
        String message = args.getString(ARG_MESSAGE);

        return new AlertDialog.Builder(getActivity())
            .setTitle(title)
            .setMessage(message)
            .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {
                    getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, null);
                }
            })
            .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {
                    getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_CANCELED, null);
                }
            })
            .create();
    }
}

それから、以下を使用して呼び出します。

    DialogFragment dialog = new YesNoDialog();
    Bundle args = new Bundle();
    args.putString(YesNoDialog.ARG_TITLE, title);
    args.putString(YesNoDialog.ARG_MESSAGE, message);
    dialog.setArguments(args);
    dialog.setTargetFragment(this, YES_NO_CALL);
    dialog.show(getFragmentManager(), "tag");

そして、 onActivityResultの結果を処理onActivityResultます。

Question

Fragments APIを使用してDialogFragment代わりに使用することをお勧めしFragments APIが、単純なYes-No確認メッセージボックスには隔離されたDialogFragmentを使用するのは不合理です。 この場合のベストプラクティスは何ですか?




DialogFragmentをAlertDialogで使用する:

  • APIレベル13の導入以来

    ActivityのshowDialogメソッドは非推奨です 。 コード内の他の場所でダイアログを呼び出すことはお勧めできません。ダイアログを自分で管理する必要があるからです(向きの変更など)。

  • 差異DialogFragment - AlertDialog

    彼らはとても異なっていますか? DialogFragmentに関するAndroidリファレンスから:

    DialogFragmentは、アクティビティのウィンドウの上に浮かぶダイアログウィンドウを表示するフラグメントです。 このフラグメントにはDialogオブジェクトが含まれており、フラグメントの状態に基づいて適切に表示されます。 ダイアログのコントロール(表示、非表示、非表示を決める)は、 ここでAPIを使用し行う必要があります。ダイアログの直接呼び出しではありません。

  • その他の注意事項

    • フラグメントは、画面サイズが異なるデバイスの多様性のため、Androidフレームワークの自然な進化です。
    • DialogFragmentsとFragmentsはサポートライブラリで利用できるようになり、現在使用されているすべてのAndroidバージョンでクラスを使用できるようになります。