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がコンパイルエラーを検出してくれます。