今回は、ダイアログの表示を行います。
ダイアログは 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を作成しています。
セコメントをする