【发布时间】:2017-12-29 04:31:31
【问题描述】:
This code 显示 Google 地图和上面的一些标记。它在我的 Galaxy Note 4 上运行良好。奇怪的是,它在与我的应用程序集成时会崩溃。
MapActivity.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {
SupportMapFragment mapFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
// mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.trisakti_map);
// mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(-6.166434, 106.79781))
.title("Universitas Trisakti"));
}
}
activity_map.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="app.devbyzero.net.pascasarjanatrisakti.MapActivity"
>
<fragment
android:id="@+id/trisakti_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_gravity="center"
android:layout_height="match_parent" />
</RelativeLayout>
logcat 说:
12-29 11:00:26.893 3623-3623/? E/AndroidRuntime: 致命异常: main 进程:app.devbyzero.net.pascasarjanatrisakti,PID:3623 java.lang.RuntimeException:无法启动活动 组件信息{app.devbyzero.net.pascasarjanatrisakti/app.devbyzero.net.pascasarjanatrisakti.MapActivity}: android.view.InflateException:二进制 XML 文件行 #0:二进制 XML 文件行#0:膨胀类片段时出错 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 在 android.app.ActivityThread.access$1100(ActivityThread.java:221) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
当然,当xml中的fragment部分被注释掉的时候,就没有crash了。很奇怪,因为我从一个工作示例中获取了这个片段代码:/
那么,我该如何解决这个膨胀问题?
【问题讨论】:
-
使用
<com.google.android.gms.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" /> -
尝试在你的 xml 中用 FrameLayout 替换片段。
-
@SonuSanjeev 尝试在空对象引用上调用虚拟方法 'void com.google.android.gms.maps.SupportMapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)'
-
@SonuSanjeev 相同的“尝试在 null 上调用虚拟方法 'void com.google.android.gms.maps.SupportMapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)'对象引用”