【问题标题】:Google Map API v2 inflator fails on old phonesGoogle Map API v2 充气机在旧手机上失败
【发布时间】:2012-12-13 11:40:30
【问题描述】:

我刚刚在应用程序中实现了一个地图,它在 Galaxy S3 中完美运行。使用带有 API8 的旧手机 HTC Sense 测试我的应用程序会引发充气机问题。我认为它可能与操作系统或 OGL2 有关。 isGooglePlayServicesAvailable(this) 返回正确的值。请帮帮我:

Activity.java

public class MyActivity extends Activity
{
 @Override
 public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.initializeInterface();
 }

 private void initializeInterface() {
    final int available = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    this.setContentView(R.layout.main);
 }
}

main.xml

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    class="com.google.android.gms.maps.MapFragment"
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@id/footer"
    android:layout_below="@id/header" />

manifest.xml

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="com.stuff.permission.MAPS_RECEIVE" />

<permission
    android:name="com.stuff.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<application
    android:icon="@drawable/icon"
    android:label="@string/application_name" >

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/map_api_key_device"/>

    <activity
        android:name=".MyActivity"
        android:configChanges="orientation"
        android:launchMode="singleTop"
        android:theme="@android:style/Theme.NoTitleBar" >
        <intent-filter> <action android:name="android.intent.action.MAIN" /> 
           <category android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter>
    </activity>
</application>

错误

12-13 12:14:13.865: E/My ERROR(22878): Binary XML file line #85: Error inflating class fragment
12-13 12:14:13.875: E/android.view.LayoutInflater.createViewFromTag(22878): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
12-13 12:14:13.895: E/android.view.LayoutInflater.rInflate(22878): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
12-13 12:14:13.915: E/android.view.LayoutInflater.inflate(22878): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
12-13 12:14:13.915: E/android.view.LayoutInflater.inflate(22878): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
12-13 12:14:13.935: E/android.view.LayoutInflater.inflate(22878): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
12-13 12:14:13.945: E/com.android.internal.policy.impl.PhoneWindow.setContentView(22878): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
12-13 12:14:13.945: E/android.app.Activity.setContentView(22878): at android.app.Activity.setContentView(Activity.java:1654)

【问题讨论】:

    标签: android google-maps-mobile


    【解决方案1】:

    这与您尝试在 API 级别 8 设备上使用本机 API 级别 11 片段有关。如果您希望代码在 Android 3.0 之前的版本上运行,请切换到 FragmentActivitySupportMapFragment

    【讨论】:

    • 我通过右键单击添加了支持库,Android->添加支持库...它也将问题扩展到了 S3:/
    • @EfEs:使用FragmentActivity 加载布局时,您不会从S3 获得Error inflating class fragment
    • 它不应该,但它确实 :( 12-13 14:36:36.424: W/dalvikvm(7301): VFY: 无法解析 Lcom/google/ 中的静态字段 1115 (common_google_play_services_install_title) android/gms/R$string;
    • XML 解析有问题,所以我只是以编程方式进行。
    【解决方案2】:

    我通过从 /extras/android/compatibility/v13 添加 v13 库并将我的 Activity 更改为 FragmentActivity 并将 MapFragment 更改为 SupportMapFragment 解决了这个问题。

    【讨论】:

      【解决方案3】:

      对我来说帮助应用程序项目 -> 右键单击​​ -> 属性 -> android -> 项目构建目标 -> 并查看早期的 android 版本。 (使用谷歌 api)

      如果没有,请通过SDK manager下载一份

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-28
        • 1970-01-01
        • 2019-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-05
        • 1970-01-01
        相关资源
        最近更新 更多