我正在尝试使用谷歌地图 fragment 创建一个基本 Activity 。现在我有这个:
public class MainScreen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
// add the map fragment to the activity
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) { return; }
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new FragmentGoogle()).commit();
}
}
}
<小时/>
public class FragmentGoogle extends android.support.v4.app.Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.map_google, container, false);
}
}
哪个产生了这个:
我的问题是:我如何与 fragment 本身交互?假设我想放大悉尼。我应该将代码放在 MainScreen.class 还是 Fragment.class 中?我应该使用哪些方法?这是我第一次使用 fragment 。
最佳答案
您不需要创建自己的 FragmentGoogle。您可以使用 com.google.android.gms.maps.SupportMapFragment 并通过 Activity 代码控制它。
在布局中:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
tools:context=".MapsActivity"
android:name="com.google.android.gms.maps.SupportMapFragment" />
然后在 Activity 代码中:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney, Australia, and move the camera.
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}
代码取自 this tutorial这足以启动和使用 Google Maps Android API 的大部分功能,只需按照以下步骤操作即可:)
关于java - 使用 map fragment Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36206244/