Im Entwickeln einer App, die eine Karte auf einem Fragment anzeigt. Alles ist eingerichtet, aber es gibt kleine Dinge, die mich nicht fertig machen lassen.MapFragment auf einem Fragment
gMapFragment.java:
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class gMapFragment extends Fragment implements OnMapReadyCallback {
public gMapFragment() {
// Required empty public constructor
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_map, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
MapFragment fragment = (MapFragment) getChildFragmentManager().findFragmentById(R.id.map);
fragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
LatLng marker = new LatLng(46.33328, 15.38173);
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(marker,13));
googleMap.addMarker(new MarkerOptions().title(("HERE WE ARE!")).position(marker));
}
}
Ich nenne dieses Fragment aus Schaltfläche in einem anderen frament und dies ist die Methode, die es nennt:
public void onClick(View view) {
Fragment fragment = null;
switch (view.getId()) {
case R.id.SearchButton:
fragment = new gMapFragment();
replaceFragment(fragment);
break;
}
}
public void replaceFragment(Fragment someFragment) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, someFragment);
transaction.addToBackStack(null);
transaction.commit();
}
ich Fehler "gMapFragment nicht sein kann in Fragment konvertiert "Irgendeine Idee, wie Sie das beheben können? Vielen Dank!
der zweite Codeblock innerhalb a Fragment? Besser, den FragmentTransaction-Code in die Aktivität zu setzen. –
Ja, ist in einem Fragment. Ich kann nicht aktiv werden .... – Capie
Ja, Sie können einfach eine öffentliche Methode in der Aktivität definieren, die eine FragmentTransaction durchführt, um das aktuelle Fragment durch das Google Map Fragment zu ersetzen, und diese Methode von Ihrer onClicke() Methode in der aufrufen Fragment. –