Tips

Android DialogFragmentをつかってAlertDialogを表示する(その2) 【Android_TIPS】

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

Androidアプリ開発の必須知識!JAVAプログラミングを学べる連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search