Android DialogFragmentをつかってAlertDialogを表示する(その2) 【Android_TIPS】
前回は、DialogFragmentクラスの使い方をandroid.support.v4パッケージにて紹介しました。
今回はandroid 3.0以降では使用可能なandroid.appパッケージを使ったサンプルを紹介したいと思います。
今回のサンプルはAndroid 2.xでは動作させることができません。
src/com.example.hellodialogfragment/MainActivity.java
package com.example.hellodialogfragment; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyDialogFragment dialog = new MyDialogFragment(); dialog.show(getFragmentManager(), "dialog"); } public void doPositiveClick() { Toast.makeText(this, "OKボタンがクリックされました", Toast.LENGTH_SHORT).show(); } public void doNegativeClick() { Toast.makeText(this, "Cancelボタンがクリックされました", Toast.LENGTH_SHORT).show(); } public static class MyDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("タイトル"); builder.setMessage("メッセージ"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { MainActivity activity = (MainActivity) getActivity(); activity.doPositiveClick(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { MainActivity activity = (MainActivity) getActivity(); activity.doPositiveClick(); } }); return builder.create(); } } }
android.support.v4パッケージとの相違点
- AndroidManifest.xmlファイルのandroid:minSdkVersionを11以上に設定すること(この設定をしないとandroid.app.Fragmentクラスが使えません)
- 前回記事のソースコード7,8行目のimport文が削除され、6行目の「android.app.DialogFragment;」が追加
- 11行目が「FragmentActivity」から「Activity」に
- 19行目が「getSupportFragmentManager()」から「getFragmentManager()」に
この程度のプログラムならば、それほど変更点は多くないですね。
ポイントはimportする際に「android.appパッケージ」を使うのか、「android.support.v4パッケージ」を使うのか正しく選択するということです。
この点さえ注意しておけば、あとは誤ったコードを書くとEclipseがコンパイルエラーを検出してくれます。