java - 使用 map fragment Activity

标签 java android fragment

我正在尝试使用谷歌地图 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);
    }
}

哪个产生了这个:

enter image description here

我的问题是:我如何与 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/

相关文章:

java - 无法创建请求的服务 [org.hibernate.cache.spi.RegionFactory] ​​- Hibernate 4.3.8

Android LayoutTransition - 如何排除 View

java - Fragment 内 RecyclerView 内 OnItemClickListener 的奇怪行为

java - 在 viewPager 中的 2 个 fragment 之间共享 listView

java - 我正在尝试编写一个封装团队概念的团队类,但我似乎无法比较两个团队

java - Hadoop 中的 Python 导入

java - 有没有办法从 Windows 服务器生成 Realm.io 数据库?

java - 如何从 id 的标识符中获取字符串

java - 是否有理由不在 android studio 中使用 lombok

android - MyActivity 类型未定义方法 getFragmentManager()