- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Android 中使用 GoogleMaps 已经有一段时间了,没有任何问题,但现在突然没有做任何更改,我在尝试从 XML 扩展 MapView 时遇到 InflateException。我已经搜索了一个解决方案,我发现的只是正确添加我知道我已经完成的库,因为它以前工作过。这是我的代码:
带有 MapView 的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.gms.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:background="@color/white"
/>
OnCreateView() 方法,我在其中膨胀 MapView:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
View v = inflater.inflate(R.layout.home_fragment, container, false);
mapView = (MapView) v.findViewById(R.id.mapview);
mapView.onCreate(savedInstanceState);
map = mapView.getMap();
}
错误日志:
08-23 09:42:14.340: E/AndroidRuntime(30030): FATAL EXCEPTION: main
08-23 09:42:14.340: E/AndroidRuntime(30030): android.view.InflateException: Binary XML file line #2: Error inflating class com.google.android.gms.maps.MapView
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.LayoutInflater.createView(LayoutInflater.java:613)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
08-23 09:42:14.340: E/AndroidRuntime(30030): at net.multieducator.telaviv.MainActivity$Map.onCreateView(MainActivity.java:948)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1504)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:942)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:482)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.View.measure(View.java:15635)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.View.measure(View.java:15635)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.View.measure(View.java:15635)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.widget.LinearLayout.measureVertical(LinearLayout.java:850)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.View.measure(View.java:15635)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
08-23 09:42:14.340: E/AndroidRuntime(30030): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2213)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.View.measure(View.java:15635)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2165)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1249)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1443)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4872)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.Choreographer.doCallbacks(Choreographer.java:579)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.Choreographer.doFrame(Choreographer.java:548)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.os.Handler.handleCallback(Handler.java:800)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.os.Handler.dispatchMessage(Handler.java:100)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.os.Looper.loop(Looper.java:194)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.app.ActivityThread.main(ActivityThread.java:5431)
08-23 09:42:14.340: E/AndroidRuntime(30030): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 09:42:14.340: E/AndroidRuntime(30030): at java.lang.reflect.Method.invoke(Method.java:525)
08-23 09:42:14.340: E/AndroidRuntime(30030): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
08-23 09:42:14.340: E/AndroidRuntime(30030): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
08-23 09:42:14.340: E/AndroidRuntime(30030): at dalvik.system.NativeStart.main(Native Method)
08-23 09:42:14.340: E/AndroidRuntime(30030): Caused by: java.lang.reflect.InvocationTargetException
08-23 09:42:14.340: E/AndroidRuntime(30030): at java.lang.reflect.Constructor.constructNative(Native Method)
08-23 09:42:14.340: E/AndroidRuntime(30030): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
08-23 09:42:14.340: E/AndroidRuntime(30030): at android.view.LayoutInflater.createView(LayoutInflater.java:587)
08-23 09:42:14.340: E/AndroidRuntime(30030): ... 46 more
08-23 09:42:14.340: E/AndroidRuntime(30030): Caused by: java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
08-23 09:42:14.340: E/AndroidRuntime(30030): at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
08-23 09:42:14.340: E/AndroidRuntime(30030): at com.google.android.gms.maps.MapView.<init>(Unknown Source)
08-23 09:42:14.340: E/AndroidRuntime(30030): ... 49 more
感谢您的帮助:)
最佳答案
像这样尝试:
layout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
MainActivity.java
public class MainActivity extends Activity {
// Google Map
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
try {
// Loading map
initilizeMap();
// Changing map type
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
// googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
// googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
// googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
// googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);
// Showing / hiding your current location
googleMap.setMyLocationEnabled(true);
// Enable / Disable zooming controls
googleMap.getUiSettings().setZoomControlsEnabled(false);
// Enable / Disable my location button
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
// Enable / Disable Compass icon
googleMap.getUiSettings().setCompassEnabled(true);
// Enable / Disable Rotate gesture
googleMap.getUiSettings().setRotateGesturesEnabled(true);
// Enable / Disable zooming functionality
googleMap.getUiSettings().setZoomGesturesEnabled(true);
double latitude = 21.3235752;
double longitude =74.1881265;
// lets place some 10 random markers
// random latitude and logitude
double[] randomLocation = createRandLocation(latitude,
longitude);
// Adding a marker
MarkerOptions marker = new MarkerOptions().position(
new LatLng(randomLocation[0], randomLocation[1]))
.title(" Mapview Test ");
//marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker));
googleMap.addMarker(marker);
// Move the camera to last position with a zoom level
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(randomLocation[0],
randomLocation[1])).zoom(15).build();
googleMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPosition));
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onResume() {
super.onResume();
initilizeMap();
}
/**
* function to load map If map is not created it will create it for you
* */
@SuppressLint("NewApi")
private void initilizeMap() {
if (googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.map)).getMap();
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
/*
* creating random postion around a location for testing purpose only
*/
private double[] createRandLocation(double latitude, double longitude) {
return new double[] { latitude + ((Math.random() - 0.5) / 500),
longitude + ((Math.random() - 0.5) / 500),
150 + ((Math.random() - 0.5) * 10) };
}
}
list 权限和 API
<permission
android:name="com.example.mapexdemo.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Required to show current location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- meta-data before </application> tag -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDxEkfvGvKy.........your api key" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
希望对你有帮助
关于java - 来自 XML 的 MapView 的 Android InflateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25459448/
您好,所以在我们的项目中,我们使用的是书法库,它没有任何问题,但现在在我添加的一项 Activity 中,它不断崩溃并出现以下堆栈跟踪: 01-23 02:25:32.178 3654-3654/?
I published my application to the Play Store as open beta. I don't get any error when I run it wi
我因为工作室提示 Dialog 而苦苦挣扎已弃用, 所以我又去阅读文档,似乎 Toast也被弃用了。 所以我尝试从 Toast 迁移至Snackbar ,但目前失败...我 我加了 implement
每当我更改屏幕方向时,我的应用程序都会崩溃并出现以下异常。我相信这与 ImageViews 导致模拟器内存不足有关,但我无法理解堆栈跟踪。 在 ProfileActivity.java(我想允许改
InflateException 在使用 glide 加载大量图像时发生。 我做了一些研究并意识到 InflateException 可能不是我的 android 应用程序崩溃的真正原因,真正的问题应
我有更多的 Activity ,我没有任何问题,但是当我开始这个 Activity (Segunda)时它坏了在此 Activity 中,我尝试使用 customView 进行缩放和绘制,但我找不到问
我正在尝试创建一个自定义 View - 手指绘画,但我遇到了这个错误,我不知道如何修复它。谁能告诉我哪里出了问题? 日志: 08-04 08:34:01.171: E/AndroidRuntime(1
我的应用程序出现此错误 Error inflating class android.support.design.widget.FloatingActionButton 我在互联网上搜索错误,我尝试了
我有 recyclerview 项目,我正在尝试编辑它们的外观。我尝试向 recyclerview 的每个项目添加一个 float 操作按钮,但它引发了此错误: android.view.Inflat
我正在尝试与我的 fragment 进行通信,但代码与我不一致并给了我错误 E/AndroidRuntime: FATAL EXCEPTION: main Process
我对应用程序开发仍然很陌生,所以我正在努力创建一个跨越 5 页(我猜是 fragment )的基本音板。在 Android Studio 中创建项目时,我从默认的“选项卡式 Activity ”选项为
我已经做了一些尝试来修复这个错误。由于我不明白,所以我没有其他解决方法。 这是我的 XML -->
所以,我在 android.view.InflateException 方面遇到了很多麻烦,我不完全确定为什么。当我尝试加载 Google map fragment 时会发生这种情况。 对于此错误的任
我遇到了一个错误的痛苦。我有一个 SherlockFragmentActivity 和至少两个 SherlockFragment。两者都使用 onCreateView 来扩充 xml 文件。然而,Lo
启动具有 fragment 的 Activity 时,我不断收到该错误。 这是我的代码的概述: 主页 Activity 从启动 屏幕 Activity 开始 home.xml(每个 fragment
我使用 RingtonePreference 并希望使用默认通知声音作为默认首选项值。为此,我遵循了以下建议:RingtonePreference Default value 可悲的是,实际上我得到了
我的 xml 文件的第 59 行: 错误发生是因为 ?attr/属性。如果我将它替换为#FF00000 或其他内容,一切正常。这种崩溃并不经常发生。 07-28 19:16:46.686
我正在尝试设置一个虚拟测试以开始我的 android 项目。但是我无法让我的应用程序与 Espresso 一起运行。未经测试,该应用程序运行良好。 这是回溯: Running tests Test r
我在实现Jake Wharton's ViewPagerIndicator的时候发现了一些问题.这些是 Logcat 上的内容: 06-19 15:32:02.661: E/AndroidRuntim
我刚刚通过这个 setup 设置了 Robolectric 测试当我测试我的应用程序时,它给我一个错误。 我已将问题缩小到我的自定义 ActionBar 布局 中的 ProgressSpinner。当
我是一名优秀的程序员,十分优秀!