简体   繁体   English

Android调试错误android.view.InflateException:二进制XML文件第9行:夸大类片段的错误

[英]Android debugging error android.view.InflateException: Binary XML file line #9: Error inflating class fragment

I keep getting this weird error when i try to run my app on my phone: android.view.InflateException: Binary XML file line #9: Error inflating class fragment and i don't know why. 当我尝试在手机上运行我的应用程序时,我不断收到此怪异错误: android.view.InflateException: Binary XML file line #9: Error inflating class fragment ,我不知道为什么。 I think maybe its to do with the way i'm calling fragments? 我认为这可能与我调用片段的方式有关吗? I've alsready searched stack overflow for an answer but all of them seem to relate to maps 我已经在搜索堆栈溢出中寻找答案,但是它们似乎都与地图有关


XML1 XML1

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.adrian.desktop.login"
    tools:ignore="MergeRootFrame">

<fragment
android:id="@+id/headlines_fragment"
android:layout_width="fill_parent"
android:layout_height="match_parent"
tools:layout="@layout/fragment_login" />
 </FrameLayout>

XML 2 XML 2

<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"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.adrian.desktop.ViewProgress$PlaceholderFragment">


    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/scrollView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">
        <LinearLayout
            android:id="@+id/Graph"
            android:orientation="vertical"
            android:fillViewport="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            </LinearLayout>
            </ScrollView>
</RelativeLayout>

java 1 Java 1

package com.example.adrian.desktop;

import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class login extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
        TextView loginTXT = (TextView) findViewById(R.id.logintxt);
        Typeface robotoTHIN = Typeface.createFromAsset(getAssets(),"Fonts/Roboto-Thin.tff");
        loginTXT.setTypeface(robotoTHIN);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.login, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_login, container, false);
            return rootView;
        }
    }
}

java 2 Java 2的

package com.example.adrian.desktop;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import com.jjoe64.graphview.GraphView;
import com.jjoe64.graphview.GraphView.GraphViewData;
import com.jjoe64.graphview.GraphViewSeries;
import com.jjoe64.graphview.LineGraphView;

public class ViewProgress extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_progress);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }

        // init example series data
        GraphViewSeries exampleSeries = new GraphViewSeries(new GraphViewData[] {
                new GraphViewData(1, 2.0d)
                , new GraphViewData(2, 1.5d)
                , new GraphViewData(3, 2.5d)
                , new GraphViewData(4, 1.0d)
        });

        GraphView graphView = new LineGraphView(
                this // context
                , "GraphViewDemo" // heading
        );
        graphView.addSeries(exampleSeries); // data

        LinearLayout layout = (LinearLayout) findViewById(R.id.Graph);
        layout.addView(graphView);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.view_progress, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_view_progress, container, false);
            return rootView;
        }
    }
}

StackTrace: 堆栈跟踪:

09-27 18:52:58.122  10725-10725/com.example.adrian.desktop E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.adrian.desktop, PID: 10725
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.adrian.desktop/com.example.adrian.desktop.login}: android.view.InflateException: Binary XML file line #9: Error inflating class fragment
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2641)
            at android.app.ActivityThread.access$800(ActivityThread.java:156)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:157)
            at android.app.ActivityThread.main(ActivityThread.java:5867)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class fragment
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
            at android.app.Activity.setContentView(Activity.java:1997)
            at com.example.adrian.desktop.login.onCreate(login.java:19)
            at android.app.Activity.performCreate(Activity.java:5312)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2541)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2641)
            at android.app.ActivityThread.access$800(ActivityThread.java:156)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:157)
            at android.app.ActivityThread.main(ActivityThread.java:5867)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException: name == null
            at java.lang.VMClassLoader.findLoadedClass(Native Method)
            at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:350)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:487)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
            at android.support.v4.app.Fragment.isSupportFragmentClass(Fragment.java:438)
            at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:256)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
            at android.app.Activity.setContentView(Activity.java:1997)
            at com.example.adrian.desktop.login.onCreate(login.java:19)
            at android.app.Activity.performCreate(Activity.java:5312)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2541)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2641)
            at android.app.ActivityThread.access$800(ActivityThread.java:156)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:157)
            at android.app.ActivityThread.main(ActivityThread.java:5867)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
            at dalvik.system.NativeStart.main(Native Method)

The stack trace identifies the issue pretty clearly: 堆栈跟踪非常清楚地标识了问题:

java.lang.NullPointerException: name == null

You didn't define the Fragment you want to have inflated. 您没有定义要膨胀的片段。 Look at examples here , the fragment needs a name. 这里看例子,片段需要一个名字。 For example 例如

android:name="com.example.news.ArticleListFragment"

If you don't provide the name, the system has no way of determining what to inflate. 如果您不提供名称,系统将无法确定要充气的物品。

You need to address the fragment itself (via the name attibute) as you can see in the example from the documentation : 您需要处理片段本身(通过名称attibute),如从文档的示例中看到的那样:

<fragment android:name="com.example.android.fragments.HeadlinesFragment"
          android:id="@+id/headlines_fragment"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="match_parent" />

Your soution should be this here: 您的意见应该是这样的:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.adrian.desktop.login"
    tools:ignore="MergeRootFrame">

    <fragment
        android:name="com.example.adrian.desktop.login$PlaceholderFragment"
        android:id="@+id/headlines_fragment"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        tools:layout="@layout/fragment_login" />

</FrameLayout>

暂无
暂无

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

相关问题 android.view.InflateException:二进制XML文件第0行:二进制XML文件第0行:膨胀类片段时出错 - android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment 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 - android.view.InflateException: Binary XML file line #9: Error inflating class fragment android.view.InflateException:二进制XML文件行#8:错误膨胀类片段 - android.view.InflateException: Binary XML file line #8: Error inflating class fragment 无法膨胀android.view.InflateException:二进制XML文件第24行:膨胀类片段时出错 - Failed to inflate android.view.InflateException: Binary XML file line #24: Error inflating class fragment android.view.InflateException:二进制XML文件第91行:错误放大了类片段 - android.view.InflateException: Binary XML file line #91: Error inflating class fragment RuntimeException:android.view.InflateException:二进制XML文件第8行:夸大类片段的错误 - RuntimeException : android.view.InflateException: Binary XML file line #8: Error inflating class fragment android.view.InflateException:二进制XML文件第21行:膨胀类片段的错误 - android.view.InflateException: Binary XML file line #21: Error inflating class fragment 原因:android.view.InflateException:二进制XML文件行#13:错误夸大了类片段 - Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment android.view.InflateException:二进制XML文件第12行:膨胀类片段的错误 - android.view.InflateException: Binary XML file line #12: Error inflating class fragment
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM