diff --git a/app/src/main/java/com/example/nemophila/MapsDialogFragment.java b/app/src/main/java/com/example/nemophila/MapsDialogFragment.java index 391b4db..f2028a4 100644 --- a/app/src/main/java/com/example/nemophila/MapsDialogFragment.java +++ b/app/src/main/java/com/example/nemophila/MapsDialogFragment.java @@ -1,8 +1,10 @@ package com.example.nemophila; +import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.widget.Toast; @@ -22,17 +24,24 @@ public MapsDialogFragment(Collection shops) { this.shops = shops; } + Nemophila nemophila; + @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + nemophila = (Nemophila) getActivity().getApplication(); + String[] choices = new String[shops.size()]; //ArrayList choices = new ArrayList<>(); + Shop[] shoplist = new Shop[shops.size()]; int j = 0; for (Iterator i = shops.iterator(); i.hasNext(); j++) { Shop tmp = (Shop)i.next(); choices[j] = tmp.getName(); + + shoplist[j] = tmp; } AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); @@ -41,6 +50,9 @@ public void onClick(DialogInterface dialog, int id) { //このボタンを押した時の処理を書きます。 //新規投稿画面へ遷移 + //ShopCreate画面に遷移 + Intent intent = new Intent(getActivity(), ShopCreateActivity.class); + startActivity(intent); } }) .setNeutralButton("キャンセル", new DialogInterface.OnClickListener() { @@ -55,6 +67,14 @@ String.format("「%s」を選択しました。", choices[which]), Toast.LENGTH_SHORT) .show(); + + //そのShopをNemophilaに渡す + nemophila.setCurrentShop(shoplist[which]); + + //そのShopのPostActivityに遷移 + //PostCreate画面に遷移 + Intent intent = new Intent(getActivity(), PostActivity.class); + startActivity(intent); } }); return builder.create(); diff --git a/app/src/main/java/com/example/nemophila/MapsFragment.java b/app/src/main/java/com/example/nemophila/MapsFragment.java index c0837f2..5a4966f 100644 --- a/app/src/main/java/com/example/nemophila/MapsFragment.java +++ b/app/src/main/java/com/example/nemophila/MapsFragment.java @@ -82,23 +82,14 @@ //ViewModelへのアクセス shopsViewModel = new ViewModelProvider(getActivity()).get(ShopsViewModel.class); + // 店情報の更新が入った時の処理 // LiveDataへの購読 shopsViewModel.getShopsLiveData().observe(getActivity(), shops -> { Toast.makeText(getActivity(), - String.format("店確認しました"), + String.format("表示していない店を確認しました。ピンを立てます"), Toast.LENGTH_SHORT) .show(); -// -// if(isLongClick == true) { -// Toast.makeText(getActivity(), -// String.format("長押しは受け取れてるよ"), -// Toast.LENGTH_SHORT) -// .show(); -// //長押し時は周辺のピンを全て取得し、ダイアログに表示する -// DialogFragment dialogFragment = new MapsDialogFragment(shops); -// dialogFragment.show(getActivity().getSupportFragmentManager(),"mapsdialog"); -// -// } + //受け取ったshopsに対してMarkerが立っているかを確認 //各shopに対応するMarkerがなければMarkerを立てる for (Shop shop : shops) { @@ -114,19 +105,17 @@ } }); + // 長押しを認識した後の処理 // LiveDataへの購読 shopsViewModel.getNearShopsLiveData().observe(getActivity(), shops -> { Toast.makeText(getActivity(), - String.format("店確認しました、ダイアログを表示します"), + String.format("近辺の店を確認しました。ダイアログを表示します"), Toast.LENGTH_SHORT) .show(); - //if(isLongClick == true) { //長押し時は周辺のピンを全て取得し、ダイアログに表示する DialogFragment dialogFragment = new MapsDialogFragment(shops); dialogFragment.show(getActivity().getSupportFragmentManager(),"mapsdialog"); - - //} }); //初期画面の座標(現在地をロードするまで表示) @@ -138,8 +127,6 @@ //画面が動いたとき mMap.setOnCameraIdleListener(() -> { - //長押し状態を解除 - //isLongClick = false; //カメラの座標とZOOM倍率を保存 //nowCamera = mMap.getCameraPosition(); nemophila.setCameraLatitude(mMap.getCameraPosition().target.latitude); @@ -175,19 +162,12 @@ nemophila.setCurrentLongitude(longpushLocation.longitude); //長押しした場合は今からShopを作成するので、CurrentShopをnullで登録しておく nemophila.setCurrentShop(null); - //ShopCreate画面に遷移 -// Intent intent = new Intent(getActivity(), ShopCreateActivity.class); -// startActivity(intent); //長押しでダイアログを表示 - //isLongClick = true; //長押ししたかどうかで動作を判定するため - Toast.makeText(getActivity(), - String.format("長押しを受け取れてるよ"), - Toast.LENGTH_SHORT) - .show(); - shopsViewModel.longClickViewArea(longpushLocation.longitude+1, longpushLocation.latitude+1, longpushLocation.longitude-1, longpushLocation.latitude-1); + //テスト用 + //shopsViewModel.longClickViewArea(longpushLocation.longitude+1, longpushLocation.latitude+1, longpushLocation.longitude-1, longpushLocation.latitude-1); //本番環境は↓の範囲で - //shopsViewModel.setViewArea(longpushLocation.longitude+0.0007, longpushLocation.latitude+0.0007, longpushLocation.longitude-0.0007, longpushLocation.latitude-0.0007); + shopsViewModel.longClickViewArea(longpushLocation.longitude+0.001, longpushLocation.latitude+0.001, longpushLocation.longitude-0.001, longpushLocation.latitude-0.001); }); // ピンをクリックした場合