SDKでダイアログ表示
2013-12-26


今回は、ダイアログの表示を行います。
ダイアログは SDKの機能を使うので native側のプログラムではないのですが、共通部分でいろいろ変更点があったので挙げておきます。

ダイアログの表示には、DialogFragmentを使用します。
Dialogを直接 create(), show()でもダイアログは表示されますが、アクティビティがダイアログの再生成をするとかで DialogFragmentを使うべき…らしいです。


BaseActivity.java
/********************
    アクティビティ
 ********************/
public class BaseActivity extends FragmentActivity
{
        static {
                System.loadLibrary("native");
    }


        public final static int         KEY_BACK        = 1;            // バックキー
        public final static int         KEY_YES         = 2;            // ダイアログ用
        public final static int         KEY_NO          = 3;

基本アクティビティの変更点です。
Activityではなく FragmentActivityを継承しています。
FragmentActivityを使うためにプロジェクトには android-support-v4.jarを追加しています。

また、アプリ側で汎用的に使えるように KEY_YESと KEY_NOを定義しています。


AppActivity.java
package app;

import sys.BaseActivity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;


/********************
    アクティビティ
 ********************/
public class AppActivity extends BaseActivity
{
        static public AppActivity       app;


        /**********
            開始
         **********/
        @Override
        protected void  onCreate(Bundle _savedInstanceState)
        {
                super.onCreate(_savedInstanceState);

                app = this;
        }


        /**************
            終了確認
         **************/
        static
        public void             open_dialog()
        {
                ExitDialogFragment      _dlg = new ExitDialogFragment();                        // 終了確認ダイアログ

                _dlg.show(app.getSupportFragmentManager(), "dialog");
        }

        /********************
            終了ダイアログ
         ********************/
        public static class ExitDialogFragment extends DialogFragment
        {
                @Override
                public Dialog   onCreateDialog(Bundle savedInstanceState)
                {
                        AlertDialog.Builder             builder = new AlertDialog.Builder(getActivity());

                        builder.setMessage("アプリを終了しますか");
                        builder.setPositiveButton("終了",
                                new DialogInterface.OnClickListener()
                                {
                                        @Override
                                        public void             onClick(DialogInterface dialog, int which)
                                        {
                                                key_status = KEY_YES;
                                        }
                                });
                        builder.setNegativeButton("キャンセル",
                                new DialogInterface.OnClickListener()
                                {
                                        @Override
                                        public void             onClick(DialogInterface dialog, int which)
                                        {
                                                key_status = KEY_NO;
                                        }
                                });

                        return  builder.create();
                }
        }
}

/***************** End of File ***************************************************/

java側で独自の処理があるので、BaseActivityを継承した AppActivityを作成しています。

続きを読む

[Android プログラミング]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット