简体   繁体   English

android.view.InflateException:二进制XML文件第0行:二进制XML文件第0行:膨胀类片段时出错

[英]android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment

Hello stackoverflow community, I have been facing with a little problem whole week. 您好stackoverflow社区,我整个星期都面临着一个小问题。 I'm trying to launch Map activity from my Main activity, and after calling Map Activity I get this error: 我试图从我的主要活动中启动地图活动,并在调用地图活动后收到此错误:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: eu.tinysolutions.tinytracker, PID: 12795
              java.lang.RuntimeException: Unable to start activity ComponentInfo{eu.tinysolutions.tinytracker/eu.tinysolutions.tinytracker.MapsActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2572)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654)
                  at android.app.ActivityThread.-wrap11(ActivityThread.java)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
                  at android.os.Handler.dispatchMessage(Handler.java:111)
                  at android.os.Looper.loop(Looper.java:207)
                  at android.app.ActivityThread.main(ActivityThread.java:5728)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
               Caused by: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                  at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:412)
                  at android.app.Activity.setContentView(Activity.java:2191)
                  at eu.tinysolutions.tinytracker.MapsActivity.onCreate(MapsActivity.java:20)
                  at android.app.Activity.performCreate(Activity.java:6309)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654) 
                  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 
                  at android.os.Handler.dispatchMessage(Handler.java:111) 
                  at android.os.Looper.loop(Looper.java:207) 
                  at android.app.ActivityThread.main(ActivityThread.java:5728) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
               Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class fragment
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                  at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:412) 
                  at android.app.Activity.setContentView(Activity.java:2191) 
                  at eu.tinysolutions.tinytracker.MapsActivity.onCreate(MapsActivity.java:20) 
                  at android.app.Activity.performCreate(Activity.java:6309) 
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) 
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654) 
                  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 
                  at android.os.Handler.dispatchMessage(Handler.java:111) 
                  at android.os.Looper.loop(Looper.java:207) 
                  at android.app.ActivityThread.main(ActivityThread.java:5728) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
               Caused by: java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
                  at com.google.maps.api.android.lib6.drd.q.b(:com.google.android.gms.dynamite_dynamitemodulesb@12673019@12.6.73 (040300-194189626):40)
                  at com.google.maps.api.android.lib6.auth.e.a(:com.google.android.gms.dynamite_dynamitemodulesb@12673019@12.6.73 (040300-194189626):11)
                  at com.google.maps.api.android.lib6.impl.e.a(:com.google.android.gms.dynamite_dynamitemodulesb@12673019@12.6.73 (040300-194189626):4)
                  at com.google.android.gms.maps.internal.b.a(:com.google.android.gms.dynamite_dynamitemodulesb@12673019@12.6.73 (040300-194189626):24)
                  at com.google.android.gms.maps.internal.CreatorImpl.a(:com.google.android.gms.dynamite_dynamitemodulesb@12673019@12.6.73 (040300-194189626):69)
                  at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(:com.google.android.gms.dynamite_dynamitemodulesb@12673019@12.6.73 (040300-194189626):32)
                  at com.google.android.gms.maps.internal.i.onTransact(:com.google.android.gms.dynamite_dynamitemodulesb@12673019@12.6.73 (040300-194189626):31)
                  at android.os.Binder.transact(Binder.java:392)
                  at com.google.android.gms.internal.maps.zza.transactAndReadException(Unknown Source)
                  at com.google.android.gms.maps.internal.zzf.zzc(Unknown Source)
                  at com.google.android.gms.maps.SupportMapFragment$zzb.zzc(Unknown Source)
                  at com.google.android.gms.maps.SupportMapFragment$zzb.createDelegate(Unknown Source)
                  at com.google.android.gms.dynamic.DeferredLifecycleHelper.zza(Unknown Source)
                  at com.google.android.gms.dynamic.DeferredLifecycleHelper.onInflate(Unknown Source)
                  at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
                  at android.support.v4.app.Fragment.onInflate(Fragment.java:1306)
                  at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3672)
                at android.support.v4.app.

MainActivity code: MainActivity代码:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mapInit();
}
public void mapInit(){
    startActivity(new Intent(this, MapsActivity.class));

}

MapsAcitivity is just a default android studio google maps activity: MapsAcitivity只是Google Studio活动的默认Android Studio:

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(this);
  }

I have found out that the app brakes on MapsActivity setContentView line 我发现该应用程序在MapsActivity setContentView行上刹车

PS I've added API key to manifest file PS我已将API密钥添加到清单文件

UPDATE 更新

sorry, I've forgotten to add layout files 抱歉,我忘记添加布局文件

Here is the activity_maps layout file: 这是activity_maps布局文件:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapsActivity" />

its there in the logs 它在日志中

Caused by: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml

add your API key in manifest file 在清单文件中添加您的API密钥

eg 例如

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    .
    .
    <application
          .  
          <meta-data
                 android:name="com.google.android.geo.API_KEY"
                 android:value="YOUR API KEY HERE" />
    </application>
</manifest>

The problem is, because you are using a fragment without a container view. 问题是,因为您使用的是没有容器视图的片段。

You can read about it from the Building a Flexible UI documentation : 您可以从构建灵活的用户界面文档中了解有关此内容的信息

An important rule when dealing with fragments—especially when adding fragments at runtime—is that your activity layout must include a container View in which you can insert the fragment. 处理片段时(尤其是在运行时添加片段时)的一个重要规则是,您的活动布局必须包含一个容器View,您可以在其中插入片段。

And from this Fragment documentation : 从这个Fragment文档中

When you add a fragment as a part of your activity layout, it lives in a ViewGroup inside the activity's view hierarchy and the fragment defines its own view layout. 当您将片段添加为活动布局的一部分时,它位于活动视图层次结构内的ViewGroup中 ,并且该片段定义了自己的视图布局。 You can insert a fragment into your activity layout by declaring the fragment in the activity's layout file, as a element, or from your application code by adding it to an existing ViewGroup 您可以通过在活动的布局文件中将该片段声明为元素来将其插入到活动布局中,或者通过将其添加到现有ViewGroup中来从应用程序代码中插入该片段

So, add a root layout to your xml by changing your activity_maps layout to something like this: 因此,通过将activity_maps布局更改为如下所示,将根布局添加到xml中:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MapsActivity" >

      <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"/>

</RelativeLayout>

Remember to use class instead of android:name attribute. 记住要使用class而不是android:name属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 android.view.InflateException:二进制XML文件第7行:二进制XML文件第7行:夸大类片段的错误 - android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragment Android调试错误android.view.InflateException:二进制XML文件第9行:夸大类片段的错误 - Android debugging error android.view.InflateException: Binary XML file line #9: Error inflating class fragment Android-android.view.InflateException:二进制XML文件第9行:膨胀类片段的错误 - Android - android.view.InflateException: Binary XML file line #9: Error inflating class fragment android.view.InflateException:二进制 XML 文件第 9 行:二进制 XML 文件第 9 行:错误膨胀类 - android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class android.view.InflateException:二进制 XML 文件第 2 行:二进制 XML1 文件第 2 行:错误充气 Z3501BB4F2AC9CDC80<unknown></unknown> - android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown> 错误:android.view.InflateException:二进制XML文件行#8:二进制XML文件行#8:错误膨胀类片段 - Error: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class fragment android.view.InflateException:二进制XML文件第6行:二进制XML文件第6行:膨胀类错误 - android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class android.view.InflateException:二进制XML文件第0行:二进制XML文件第0行:膨胀类错误<Classname> - android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class <Classname> android.view.InflateException:二进制XML文件行#8:错误膨胀类片段 - android.view.InflateException: Binary XML file line #8: Error inflating class fragment android.view.InflateException:二进制XML文件第56行:二进制XML文件第56行:夸大类片段的错误 - android.view.InflateException: Binary XML file line #56: Binary XML file line #56: Error inflating class fragment
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM