web-dev-qa-db-ja.com

AlertDialog.Builderまたは同等のものからAppCompatDialogを構築する方法は?

この前に、私はDialogBuilderを使用してこのようなAlertDialogを作成しました

AlertDialog.Builder builder = new AlertDialog.Builder(context);
...
...
AlertDialog dialog = builder.create();

ダイアログビルダーから新しいAppCompatDialogを作成するにはどうすればよいですか、またはそれを行うための別の新しい同等の方法はありますか?

12
Neoh

ちょうど解決策を見つけました。インポートする必要があります

_import Android.support.v7.app.AlertDialog;
_

その後、AppCompatDialog dialog = builder.create()が機能します。

19
Neoh

AlertDialogを使用する場合は、新しいsupprt v 22.1をインポートして、次のようなコードを使用します(インポートに注意してください)。

import Android.support.v7.app.AlertDialog

AlertDialog.Builder builder =
       new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle);
            builder.setTitle("Dialog");
            builder.setMessage("Lorem ipsum dolor ....");
            builder.setPositiveButton("OK", null);
            builder.setNegativeButton("Cancel", null);
            builder.show();

場合

16

Android.support.v7.app.AppCompatDialogAndroid.support.v7.app.AlertDialogの直接の親クラスであり、Android.support.v7.app.AlertDialogを使用できる場所であればどこでも、Android.support.v7.app.AppCompatDialogを使用できます。

6
SilentKnight

すべての_Android.app.AlertDialog_を_Android.support.v7.app.AlertDialog_に移動しました。

4.Xエミュレーターでいくつかテストした後、単純なダイアログの場合は、インポートを変更するだけで十分であることがわかりました。ただし、複数選択ダイアログの場合は、さらに、マテリアルデザインスタイルのダイアログ(4.X)を取得するためにAppCompatDialog alert = builder.create();を実行する必要があります。

明確にするために、このような単純なダイアログがある場合:

_import Android.support.v7.app.AlertDialog;

AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setIcon(resId)
.setTitle(title)
.setMessage(msg)
.setCancelable(isCalncelable)
.setPositiveButton(btn1, listener1);
AlertDialog alert = builder.create();
alert.show();
_

インポートを変更するだけで十分です:)

ただし、複数選択ダイアログの場合は、次のようにAppCompatDialogを使用する必要があります。

_import Android.support.v7.app.AlertDialog;
import Android.support.v7.app.AppCompatDialog;

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Choose something")
.setPositiveButton(...)
.setMultiChoiceItems(mStringArray, mSelectedArray, SomeFragment.this);
AppCompatDialog alert = builder.create();
alert.show();
_

次に、4.XデバイスでNice MaterialDesignの外観を取得します。

今、楽しい部分です!

複数選択ダイアログの場合、5.Xデバイスの場合、ネイティブバージョン(_Android.app.AlertDialog_)は、のチェックボックスを-の直後に表示します。 マテリアルデザイン仕様 。ただし、サポートダイアログを使用する場合は、チェックボックスがrightに表示されます。 WTF!

長期的には、Android 5+が市場シェアを獲得するにつれて、ネイティブダイアログに切り替えたいと思うでしょう。

4