我正在尝试在Android项目中使用Google Map。一个人的详细信息将连续显示,并且点击一个按钮,将使用针对该人保存的纬度和经度显示该位置。我正在使用片段进行显示。
activity_show_map.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.dioglgt.myapplication.ClinicFragment" />
下面给出了相应的ClinicFragment java类:
public class ClinicFragment extends Fragment implements OnMapReadyCallback {
private GoogleMap mMap;
public static ClinicFragment newInstance() {
ClinicFragment fragment = new ClinicFragment();
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_show_map, null, false);
SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
return view;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng testLocation = new LatLng(93.972, 26.515);
mMap.addMarker(new MarkerOptions().position(testLocation).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(testLocation));
}
}
现在要在点击按钮时触发地图显示,我使用下面的代码:
public void onShowLocationClick(View view) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.map,new ClinicFragment());
transaction.addToBackStack(null);
transaction.commit();
}
但我收到错误:
java.lang.IllegalArgumentException: No view found for id 0x7f0e0087 (com.example.dioglgt.myapplication:id/map) for fragment ClinicFragment{9dd7da #0 id=0x7f0e0087}
请在这方面提供指导。
答案 0 :(得分:1)
必须使用此
public void onShowLocationClick(View view) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(android.R.id.content,new ClinicFragment());
transaction.addToBackStack(null);
transaction.commit();
}
答案 1 :(得分:0)
您正尝试在ID为map的片段上添加ClinicFragment,其内部为activity_show_map,设置为Clinic片段。尝试使用frameLayout并将该frameLayout替换为下面按钮点击链接上的片段:
Fragmentmanager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_container, new ClinicFragment()).commit();
在上面的代码中fragment_container
是一个FrameLayout,它将替换为ClinicFragment
;