次のエントリ: pull to refreshを使う [jQueryMobile]
DialogFragmentでダイアログ表示
2013-05-02-1 / カテゴリ: [Android] / [permlink]
GB(Android2.3)までは、Activity#onCreateDialog(int) をOverrideしたメソッドで AlertDialog を作るようにしておいて、ダイアログを表示したい箇所で Activity#showDialog(int) すればOKだったけど、API level 13からこれらの実装は deprecated になってる。
どうするかと言うと、DialogFragment を使ってダイアログを表示する。
API 10以下(GB以下)の場合は、Support Packageを使えばOK。
画面部分にFragmentを使わない(使いたくない)場合でも、ダイアログのみの利用でも大丈夫。
基本はこんな感じ。
27行目以降でダイアログを表示するためのクラスを作成し、30行目のDialogFragment#onCreateDialog()で以前のActivity#onCreateDialog()に相当するダイアログ生成処理を実装する。
そして、表示したい箇所(23,24行目)で、このクラスのオブジェクトを作成してshow()を呼べばOK
Fragmentが標準で使用できるAPI11以上の場合はこのコードで大丈夫だけど、それ以前のAPI levelの場合はサポートパッケージ(android-support-v4.jar)を使う。
その場合は画面はActivityでなくFragmentActivity(android.support.v4.app.FragmentActivity)を継承し、
deprecatedだけどまいっか、と逃げようとしてたところ、そんなに難しくないよーと教えてくれた @patorash さんありがとうございました!
どうするかと言うと、DialogFragment を使ってダイアログを表示する。
API 10以下(GB以下)の場合は、Support Packageを使えばOK。
画面部分にFragmentを使わない(使いたくない)場合でも、ダイアログのみの利用でも大丈夫。
基本はこんな感じ。
public class MainActivity extends Activity { protected static final String TAG = MainActivity.class.getSimpleName(); private String string = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View btn3 = findViewById(R.id.dialog_fragment); btn3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showDialogFragment(); } }); } protected void showDialogFragment() { FragmentManager manager = getFragmentManager(); DialogFragmentSample dialog = new DialogFragmentSample(); dialog.show(manager, "dialog"); } public static class DialogFragmentSample extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Log.d(TAG, "tag: " + getTag()); Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("Fragment Dialog"); builder.setMessage("フラグメントの\nダイアログの\nサンプル"); builder.setPositiveButton("はい", null); builder.setNegativeButton("いいえ", null); AlertDialog dialog = builder.create(); return dialog; } } }
27行目以降でダイアログを表示するためのクラスを作成し、30行目のDialogFragment#onCreateDialog()で以前のActivity#onCreateDialog()に相当するダイアログ生成処理を実装する。
そして、表示したい箇所(23,24行目)で、このクラスのオブジェクトを作成してshow()を呼べばOK
Fragmentが標準で使用できるAPI11以上の場合はこのコードで大丈夫だけど、それ以前のAPI levelの場合はサポートパッケージ(android-support-v4.jar)を使う。
その場合は画面はActivityでなくFragmentActivity(android.support.v4.app.FragmentActivity)を継承し、
public class MainActivity extends FragmentActivity {前述のコード22行目でActivity#getFragmentManager()で取得していたFragmentManager(android.app.FragmentManager)オブジェクトは、FragmentActivity#getSupportFragmentManager()での取得に変更(メソッド名が異なる/クラスはandroid.support.v4.app.FragmentManager)する。
protected void showDialogFragment() { FragmentManager manager = getSupportFragmentManager(); DialogFragmentSample dialog = new DialogFragmentSample(); dialog.show(manager, "dialog"); }
deprecatedだけどまいっか、と逃げようとしてたところ、そんなに難しくないよーと教えてくれた @patorash さんありがとうございました!
次のエントリ: pull to refreshを使う [jQueryMobile]
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2013-05-02 16:12