From: MRSa Date: Tue, 17 Apr 2018 15:15:57 +0000 (+0900) Subject: CreateModelDataDialogのDialogFragment化(Ambient時に操作できない不具合を改修) X-Git-Url: http://git.osdn.net/view?p=gokigen%2FJoggingTimer.git;a=commitdiff_plain;h=40230bf8683bf1081d276800e325df501ab95427 CreateModelDataDialogのDialogFragment化(Ambient時に操作できない不具合を改修) --- diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java index 72d5884..35b7e05 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java @@ -256,8 +256,8 @@ public class RecordDetailSetup implements ITimeEntryDatabaseCallback, IDetailEd @Override public void run() { - CreateModelDataDialog dialog2 = new CreateModelDataDialog(activity); - dialog2.show(false, activity.getString(R.string.information_modify_time), count, new CreateModelData(database, editCallback, null, indexId, dataId), defaultMillis); + CreateModelDataDialog dialog2 = CreateModelDataDialog.newInstance(false, activity.getString(R.string.information_modify_time), count, new CreateModelData(database, editCallback, null, indexId, dataId), defaultMillis); + dialog2.show(activity.getFragmentManager(), "dialog2"); } }); } diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recordlist/ListActivity.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recordlist/ListActivity.java index bfd2961..0b9fdc8 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recordlist/ListActivity.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recordlist/ListActivity.java @@ -218,8 +218,8 @@ public class ListActivity extends WearableActivity implements IDetailLauncher, R { case R.id.menu_create_model: // モデルデータの作成 - CreateModelDataDialog dialog2 = new CreateModelDataDialog(this); - dialog2.show(true, getString(R.string.information_time_picker), 0, setupper.getCreateModelDataCallback(ITimeEntryDatabase.DONT_USE_ID, ITimeEntryDatabase.DONT_USE_ID), 0); + CreateModelDataDialog dialog2 = CreateModelDataDialog.newInstance(true, getString(R.string.information_time_picker), 0, setupper.getCreateModelDataCallback(ITimeEntryDatabase.DONT_USE_ID, ITimeEntryDatabase.DONT_USE_ID), 0); + dialog2.show(getFragmentManager(), "dialog2"); break; diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/utilities/CreateModelDataDialog.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/utilities/CreateModelDataDialog.java index b09cbae..7703a10 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/utilities/CreateModelDataDialog.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/utilities/CreateModelDataDialog.java @@ -1,8 +1,12 @@ package net.osdn.gokigen.joggingtimer.utilities; +import android.app.Activity; import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; import android.content.DialogInterface; -import android.support.wearable.activity.WearableActivity; +import android.os.Bundle; +import android.support.annotation.NonNull; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; @@ -18,24 +22,58 @@ import net.osdn.gokigen.joggingtimer.R; * * */ -public class CreateModelDataDialog +public class CreateModelDataDialog extends DialogFragment { private final String TAG = toString(); - private final WearableActivity activity; - public CreateModelDataDialog(WearableActivity activity) + private boolean isLap = true; + private String title = ""; + private int lapCount = 0; + private Callback callback = null; + private long defaultValue = 0; + Dialog myDialog = null; + + /** + * + * + */ + public static CreateModelDataDialog newInstance(boolean isLap, String title, int lapCount, Callback callback, long defaultValue) { - this.activity = activity; + CreateModelDataDialog instance = new CreateModelDataDialog(); + instance.prepare(isLap, title, lapCount, callback, defaultValue); + + // パラメータはBundleにまとめておく + Bundle arguments = new Bundle(); + arguments.putString("title", title); + //arguments.putString("message", message); + instance.setArguments(arguments); + + return (instance); } /** * - * @param callback 結果をコールバック + * */ - public void show(final boolean isLap, String title, final int lapCount, final Callback callback, final long defaultValue) + private void prepare(boolean isLap, String title, int lapCount, Callback callback, long defaultValue) + { + this.isLap = isLap; + this.title = title; + this.lapCount = lapCount; + this.callback = callback; + this.defaultValue = defaultValue; + } + + /** + * + * + */ + @Override + public @NonNull Dialog onCreateDialog(Bundle savedInstanceState) { Log.v(TAG, "show " + "def. : " + defaultValue); + Activity activity = getActivity(); // 確認ダイアログの生成 final AlertDialog.Builder alertDialog = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.wear2_dialog_theme)); @@ -117,16 +155,39 @@ public class CreateModelDataDialog new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { - callback.dataCreateCancelled(); + try + { + callback.dataCreateCancelled(); + } + catch (Exception e) + { + e.printStackTrace(); + } dialog.cancel(); } }); - // 確認ダイアログを表示する - alertDialog.show(); + myDialog = alertDialog.create(); + return (myDialog); + } + + + @Override + public void onPause() + { + super.onPause(); + Log.v(TAG, "AlertDialog::onPause()"); + if (myDialog != null) + { + myDialog.cancel(); + } } - // コールバックインタフェース + + /** + * コールバックインタフェース + * + */ public interface Callback { void dataCreated(boolean isLap, int lap, long previousValue, long newValue); // OKを選択したとき