そのメニュー内にいくつかのボタンがあるメニューを上部に持つアプリを開発しています。ボタンの 1 つに Google マップを追加しようとしていますが、うまくいきません。私はこのチュートリアルに従っていましたが、Googleマップを直接実装する代わりにMainActivity
、ボタンが押されたときに起動されるフラグメントに追加しました。すべてうまくいきました。ボタンを押すと、マップが読み込まれ、正常に機能します。ホームボタンを押して戻るとMainActivity
完全に機能しますが、マップを再度ロードしたい場合は、debugging error: Class File Editor: Source not found
これはGoogleMaps
フラグメントのコードです:
public class GoogleMaps extends Fragment{
private GoogleMap googleMap;
double latitude = 46.514249;
double longitude = 15.080183;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View myFragmentView = inflater.inflate(R.layout.maps_layout, container, false);
try {
// Loading map
initilizeMap();
} catch (Exception e) {
Log.e("ERROR", "ERROR IN CODE: " + e.toString());
e.printStackTrace();
}
return myFragmentView;
}
private void initilizeMap() {
if (googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)));
CameraPosition cameraPosition = new CameraPosition.Builder().target(
new LatLng(latitude, longitude)).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(getActivity(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
}
どんな助けでも大歓迎です。
編集:私が十分に具体的でなければ。fragment
一度(初めて)ロードすると機能しますが、再度ロードしようとすると(2回目)機能しません。
EDIT v2:私は実際に自分で解決策を見つけました。私がしなければならなかったのは、OnDestroyView
メソッドを追加することだけでした:
public void onDestroyView()
{
super.onDestroyView();
Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}
とにかくありがとう。