Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android studio onMapReady未调用_Java_Android_Xml - Fatal编程技术网

Java android studio onMapReady未调用

Java android studio onMapReady未调用,java,android,xml,Java,Android,Xml,我想在我的一个视图中集成地图视图 我已经生成了一个新的地图片段。它出现在一个不同的角度,就像一个魅力 然后我尝试将代码集成到一个正常的活动中(一个带有actionbar的活动,等等)。它有点管用——很好地出现在屏幕上,但在那种环境下,我从来没有接到过电话(换句话说,我留在非洲,而不是去悉尼) 已经上了好几个小时了 以下是xml代码: 有什么建议吗?我得到了答案——差不多 关于片段活动的整个代码从未被调用。我尝试了几种方法来激活这个片段,但都走到了死胡同 另一种解决方案是继续使用主活动(App

我想在我的一个视图中集成地图视图

我已经生成了一个新的地图片段。它出现在一个不同的角度,就像一个魅力

然后我尝试将代码集成到一个正常的活动中(一个带有actionbar的活动,等等)。它有点管用——很好地出现在屏幕上,但在那种环境下,我从来没有接到过电话(换句话说,我留在非洲,而不是去悉尼)

已经上了好几个小时了

以下是xml代码:


有什么建议吗?

我得到了答案——差不多

关于片段活动的整个代码从未被调用。我尝试了几种方法来激活这个片段,但都走到了死胡同

另一种解决方案是继续使用主活动(AppCompatActivity的子类)。事实证明,AppCompativeActivity可以直接实现OnMapReadyCallback

所以我添加了“implementonmapreadycallback”,然后直接添加了一个“onMapReady”回调。代码如下所示:

public class MonumentActivity extends AppCompatActivity implements OnMapReadyCallback {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_monument);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.monument_map);
    mapFragment.getMapAsync(this);
[...]
@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Sydney and move the camera
    LatLng louvres = new LatLng(48.860294, 2.338629);
    mMap.addMarker(new MarkerOptions().position(louvres).title("Marker sur le Louvres"));
    // mMap.moveCamera(CameraUpdateFactory.newLatLng(louvres));
    // mMap.moveCamera(CameraUpdateFactory.zoomTo(18));
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(louvres, 15));
}

很好。我得到了一个完整的活动(工具栏、菜单处于活动状态,还有一个额外的浮动按钮),并且基础映射工作正常…

我知道这听起来很愚蠢,但您是否实际使用了调试器来查看它是否进入onMapReady()?我在看我的一些个人代码,我们的工作基本上是一致的。也许已经有什么东西坏了?很好的建议。我检查了一下,是的,没有调用onMapReady。但是当我在使用调试器时,我注意到onCreate也没有被调用。很自然,onMapReady从未注册过。那么现在,为什么不调用onCreate呢。我签入了另一个演示代码(仅在屏幕上提取片段的标准示例),并且确实调用了onCreate。但一旦我将片段放在我的活动中(上面的代码),onCreate就不会被调用…仍然不会调用
public class MonumentActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_monument);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(MapsActivity.this);

    }
        /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney 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));
    }
}
}
public class MonumentActivity extends AppCompatActivity implements OnMapReadyCallback {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_monument);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.monument_map);
    mapFragment.getMapAsync(this);
[...]
@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Sydney and move the camera
    LatLng louvres = new LatLng(48.860294, 2.338629);
    mMap.addMarker(new MarkerOptions().position(louvres).title("Marker sur le Louvres"));
    // mMap.moveCamera(CameraUpdateFactory.newLatLng(louvres));
    // mMap.moveCamera(CameraUpdateFactory.zoomTo(18));
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(louvres, 15));
}