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

Posted

技术标签:

【中文标题】android.view.InflateException 膨胀类片段时出错,二进制 XML 文件第 1 行?【英文标题】:android.view.InflateException Error inflating class fragment, Binary XML file line #1? 【发布时间】:2016-11-16 10:08:01 【问题描述】:

android 项目给出 InflateException 错误。

这是来自 Android Studio Android Monitor 的错误:

--------- 崩溃开始 07-14 00:03:23.801 13726-13726/com.example.romi.parcelablecreatortest E/AndroidRuntime: 致命例外: main 进程:com.example.romi.parcelablecreatortest,PID:13726 java.lang.RuntimeException:无法启动活动 ComponentInfocom.example.romi.parcelablecreatortest/com.example.romi.parcelablecreatortest.MainActivity:android.view.InflateException:二进制 XML 文件第 1 行:二进制 XML 文件第 1 行: 膨胀类片段时出错 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:android.view.InflateException:二进制 XML 文件第 1 行:二进制 XML 文件第 1 行:膨胀类片段时出错 在 android.view.LayoutInflater.inflate(LayoutInflater.java:539) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 在 com.example.romi.parcelablecreatortest.MainActivity.onCreate(MainActivity.java:11)

代码如下:

activity_main.xml

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fragment"
    android:name="com.example.romi.parcelablecreatortest.MainActivityFragment"
    android:layout="@layout/activity_main_activity_fragment"
    android:layout_
    android:layout_/>

MainActivity.java

package com.example.romi.parcelablecreatortest;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity 

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

【问题讨论】:

【参考方案1】:

你没有初始化TopRatedMovieJson[] topRatedMovieJson;这就是你得到NPEat的原因

java.lang.NullPointerException: storage == null at java.util.Arrays$ArrayList.(Arrays.java:38) at java.util.Arrays.asList(Arrays.java:155) at com.example.romi.parcelablecreatortest.MainActivityFragment.onCreate(MainActivityFragment.java:74)

MainActivityFragment's更新

 public void jsonParser(String json) 

        final String LOG_TAG = MainActivityFragment.class.getSimpleName();

        // The variables that we want from the json file
        final String title = "original_title"; // JSONObject
        final String posterPath = "poster_path"; // JSONObject
        final String synopsis = "overview"; // JSONObject
        final String userRating = "popularity"; // JSONObject
        final String releaseDate = "release_date"; // JSONObject

        // Parsing the json file
        try 
            JSONArray jsonArray = new JSONArray(json);
            // for is used to cycle through the json array.
            topRatedMovieJson= new TopRatedMovieJson[jsonArray.length()];
            for (int i = 0; i < jsonArray.length(); i++) 
                JSONObject jsonObject = jsonArray.getJSONObject(i); // getJSONObject(i) will take onw of the json array with i=0 as its first index
                topRatedMovieJson[i] = new TopRatedMovieJson(
                        jsonObject.getString(title),
                        jsonObject.getString(posterPath),
                        jsonObject.getString(synopsis),
                        jsonObject.getString(userRating),
                        jsonObject.getString(releaseDate)
                );
            
         catch (JSONException e) 
            e.printStackTrace();
        
    

【讨论】:

谢谢。我在 onCreate 中初始化它。 topRatedMovieJson = new TopRatedMovieJson[1000]; 但它仍然没有解决 InflateException 错误。还有其他解决方案可以尝试吗? @QuartZ 我没有时间解决您的完整应用程序的错误。首先阅读完整的 logcat 并尝试自己出错。如果您在其他行中遇到错误,请编辑您的问题。 请尝试清理您的项目并重建它! 谢谢。我修复它。问题出在xml中。

以上是关于android.view.InflateException 膨胀类片段时出错,二进制 XML 文件第 1 行?的主要内容,如果未能解决你的问题,请参考以下文章