次のエントリ: 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
