diff --git a/app/src/main/java/org/ntlab/amaryllis/client/DialogFragment.java b/app/src/main/java/org/ntlab/amaryllis/client/DialogFragment.java
deleted file mode 100644
index edd105c..0000000
--- a/app/src/main/java/org/ntlab/amaryllis/client/DialogFragment.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.ntlab.amaryllis.client;
-
-import android.os.Bundle;
-import androidx.fragment.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-/**
- * A simple {@link Fragment} subclass.
- * Use the {@link DialogFragment#newInstance} factory method to
- * create an instance of this fragment.
- *
- */
-public class DialogFragment extends Fragment {
-
- // TODO: Rename parameter arguments, choose names that match
- // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
- private static final String ARG_PARAM1 = "param1";
- private static final String ARG_PARAM2 = "param2";
-
- // TODO: Rename and change types of parameters
- private String mParam1;
- private String mParam2;
-
- /**
- * Use this factory method to create a new instance of
- * this fragment using the provided parameters.
- *
- * @param param1 Parameter 1.
- * @param param2 Parameter 2.
- * @return A new instance of fragment DialogFragment.
- */
- // TODO: Rename and change types and number of parameters
- public static DialogFragment newInstance(String param1, String param2) {
- DialogFragment fragment = new DialogFragment();
- Bundle args = new Bundle();
- args.putString(ARG_PARAM1, param1);
- args.putString(ARG_PARAM2, param2);
- fragment.setArguments(args);
- return fragment;
- }
-
- public DialogFragment() {
- // Required empty public constructor
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (getArguments() != null) {
- mParam1 = getArguments().getString(ARG_PARAM1);
- mParam2 = getArguments().getString(ARG_PARAM2);
- }
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_dialog, container, false);
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/amaryllis/client/MyDialogFragment.java b/app/src/main/java/org/ntlab/amaryllis/client/MyDialogFragment.java
new file mode 100644
index 0000000..0fcd0b6
--- /dev/null
+++ b/app/src/main/java/org/ntlab/amaryllis/client/MyDialogFragment.java
@@ -0,0 +1,150 @@
+package org.ntlab.amaryllis.client;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RadioGroup;
+
+import org.ntlab.amaryllis.client.fragment.MapsFragment;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link MyDialogFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ *
+ */
+public class MyDialogFragment extends Fragment {
+
+ // TODO: Rename parameter arguments, choose names that match
+ // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+ private static final String ARG_PARAM1 = "param1";
+ private static final String ARG_PARAM2 = "param2";
+
+ // TODO: Rename and change types of parameters
+ private String mParam1;
+ private String mParam2;
+
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment DialogFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static MyDialogFragment newInstance(String param1, String param2) {
+ MyDialogFragment fragment = new MyDialogFragment();
+ Bundle args = new Bundle();
+ args.putString(ARG_PARAM1, param1);
+ args.putString(ARG_PARAM2, param2);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ public MyDialogFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getArguments() != null) {
+ mParam1 = getArguments().getString(ARG_PARAM1);
+ mParam2 = getArguments().getString(ARG_PARAM2);
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_dialog, container, false);
+ }
+
+ public void show(FragmentManager manager, String dialogFragment) {
+ }
+
+
+
+
+
+
+
+ // Fragmentから生成されるダイアログ
+ public static class MyDialog extends DialogFragment {
+
+ // 選択されたラジオボタンのID
+ int mCheckedId;
+
+ public static MyDialog newInstance() {
+ return new MyDialog();
+ }
+
+ private OnOkClickListener mListener;
+ public interface OnOkClickListener {
+ public void onOkClicked(Bundle args);
+ }
+
+ //@Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ mListener = (OnOkClickListener) getTargetFragment();
+ if (mListener instanceof OnOkClickListener == false) {
+ throw new ClassCastException("実装エラー");
+ }
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+
+ LayoutInflater inflater = getActivity().getLayoutInflater();
+ View v = inflater.inflate(R.layout.fragment_dialog, null, false);
+ RadioGroup radioGroup = (RadioGroup) v.findViewById(R.id.radioGroupOptions);
+
+ radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
+ public void onCheckedChanged(RadioGroup group, int checkedId) {
+ mCheckedId = checkedId;
+ }
+ });
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder.setTitle("MY DIALOG");
+ builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ // 呼び出し元フラグメントのビューを更新
+ Bundle arg = new Bundle();
+ arg.putInt("KEY_MYDIALOG", mCheckedId);
+ // MyFragmentのonOkClickedをコール
+ mListener.onOkClicked(arg);
+ }
+ });
+ builder.setNegativeButton("Cancel", null);
+ builder.setView(v);
+ return builder.create();
+ }
+ }
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/amaryllis/client/fragment/ListFragment.java b/app/src/main/java/org/ntlab/amaryllis/client/fragment/ListFragment.java
index 73e23ea..efa454c 100644
--- a/app/src/main/java/org/ntlab/amaryllis/client/fragment/ListFragment.java
+++ b/app/src/main/java/org/ntlab/amaryllis/client/fragment/ListFragment.java
@@ -1,5 +1,6 @@
package org.ntlab.amaryllis.client.fragment;
+import android.content.DialogInterface;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
@@ -7,7 +8,10 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+import org.ntlab.amaryllis.client.MyDialogFragment;
import org.ntlab.amaryllis.client.R;
/**
@@ -60,7 +64,56 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
+
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_list, container, false);
}
+}
+
+// 呼び出し元のFragment
+public class MyFragment extends Fragment implements MyDialogFragment.MyDialog.OnOkClickListener {
+
+ // ダイアログを表示するボタン
+ private Button mDispDialog;
+ // ダイアログで選択したものを反映するTextView
+ private TextView mSelectedText;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View v = inflater.inflate(R.layout.fragment_dialog, container, false);
+
+ mSelectedText = (TextView) v.findViewById(R.id.textSelected);
+ mDispDialog = (Button) v.findViewById(R.id.btnDispDialog);
+ mDispDialog.setOnClickListener(new DialogInterface.OnClickListener() {
+ public void onClick(View v) {
+ FragmentManager manager = getActivity().getSupportFragmentManager();
+ MyDialog dialog = MyDialog.newInstance();
+ dialog.setTargetFragment(MyFragment.this, 0); // ★★★
+ dialog.show(manager, "MyDialog");
+ }
+ });
+ return v;
+ }
+
+ // コールバックされるメソッド
+ @Override
+ public void onOkClicked(Bundle args) {
+ int selectedId = args.getInt("KEY_MYDIALOG");
+ String text = "none";
+
+ switch (selectedId) {
+ case R.id.radioDog:
+ text = "いぬ";
+ break;
+ case R.id.radioMonkey:
+ text = "猿";
+ break;
+ case R.id.radioPheasant:
+ text = "キジ";
+ break;
+ default:
+ }
+
+ mSelectedText.setText(text.toString());
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java b/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java
index 678abab..f0d9653 100644
--- a/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java
+++ b/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java
@@ -4,6 +4,7 @@
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
import android.app.Dialog;
import android.content.Context;
@@ -25,6 +26,7 @@
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
+import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
@@ -60,6 +62,7 @@
private SeekBar positionBar;
private TextView elapsedTimeLabel;
private TextView remainingTimeLabel;
+ private TextView mSelectedText;
private int StartChange = 1;
private int SeekChange = 1;
private int StopChange = 0;
@@ -100,6 +103,25 @@
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
+
+ View v = inflater.inflate(R.layout.fragment_dialog, container, false);
+ mSelectedText = (TextView) v.findViewById(R.id.textSelected);
+
+
+ dialogButton = (Button)v.findViewById(R.id.dialog);
+ dialogButton.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ //Record();
+ FragmentManager manager = getActivity().getSupportFragmentManager();
+ MyDialogFragment dialog = MyDialogFragment.newInstance();
+ dialog.setTargetFragment(MapsFragment.this, 0);
+ dialog.show(manager, "MyDialogFragment");
+
+
+ }
+ });
+
+
return inflater.inflate(R.layout.fragment_maps, container, false);
}
@@ -134,15 +156,20 @@
}
});
- dialogButton = (Button)view.findViewById(R.id.dialog);
- dialogButton.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- //Record();
- //Dialog builder = null;
- //builder.show();
- }
- });
+
+ //dialogButton = (Button)view.findViewById(R.id.dialog);
+ //dialogButton.setOnClickListener(new View.OnClickListener() {
+ //public void onClick(View v) {
+ //Record();
+ //FragmentManager manager = getActivity().getSupportFragmentManager();
+ //DialogFragment dialog = DialogFragment.newInstance();
+ //dialog.setTargetFragment(MapsFragment.this, 0);
+ //dialog.show(manager, "DialogFragment");
+
+
+ //}
+ //});
SupportMapFragment mapFragment =
(SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
@@ -152,6 +179,10 @@
}
+
+
+
+
public class FragmentTest extends Fragment implements View.OnClickListener {
@Override
diff --git a/app/src/main/res/layout/fragment_dialog.xml b/app/src/main/res/layout/fragment_dialog.xml
index d0f1f2b..6e868d8 100644
--- a/app/src/main/res/layout/fragment_dialog.xml
+++ b/app/src/main/res/layout/fragment_dialog.xml
@@ -4,26 +4,15 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".DialogFragment">
+ tools:context=".MyDialogFragment">
-
-
-
+
\ No newline at end of file