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"> - -