【问题标题】:android.view.InflateException: Binary XML file line #56: Binary XML file line #56: Error inflating class fragmentandroid.view.InflateException: Binary XML file line #56: Binary XML file line #56: Error inflating class fragment
【发布时间】:2016-01-10 13:08:47
【问题描述】:

如果您单击片段 A,片段 B 将显示一些文本。只有它崩溃说:android.view.InflateException:二进制 XML 文件行#56:二进制 XML 文件行#56:错误膨胀类片段.. 在堆栈上剪了 2 天后,我真的找不到问题:s

日志:

RuntimeException: Unable to start activity ComponentInfo{be.ehb.dt.taakandroid/be.ehb.dt.taakandroid.HowTo}: android.view.InflateException: Binary XML file line #56: Binary XML file line #56: Error inflating class fragment
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                     at android.os.Looper.loop(Looper.java:148)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                  Caused by: android.view.InflateException: Binary XML file line #56: Binary XML file line #56: 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:393)
                                                                     at android.app.Activity.setContentView(Activity.java:2166)
                                                                     at be.ehb.dt.taakandroid.HowTo.onCreate(HowTo.java:19)
                                                                     at android.app.Activity.performCreate(Activity.java:6237)
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:148) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                  Caused by: android.view.InflateException: Binary XML file line #56: Error inflating class fragment
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
                                                                     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                     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:393) 
                                                                     at android.app.Activity.setContentView(Activity.java:2166) 
                                                                     at be.ehb.dt.taakandroid.HowTo.onCreate(HowTo.java:19) 
                                                                     at android.app.Activity.performCreate(Activity.java:6237) 
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:148) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                  Caused by: java.lang.IllegalStateException: Fragment android.support.v4.app.DialogFragment did not create a view.
                                                                     at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2314)
                                                                     at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111)
                                                                     at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:314)
                                                                     at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
                                                                     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:754)
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
                                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
                                                                     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
                                                                     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:393) 
                                                                     at android.app.Activity.setContentView(Activity.java:2166) 
                                                                     at be.ehb.dt.taakandroid.HowTo.onCreate(HowTo.java:19) 
                                                                     at android.app.Activity.performCreate(Activity.java:6237) 
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:148) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Manifest.xml

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="be.ehb.dt.taakandroid">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".HowTo">
            <intent-filter>
                <action android:name="android.intent.action.HowTo" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

运行两个片段的类:

package be.ehb.dt.taakandroid;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;

import static be.ehb.dt.taakandroid.R.id.fragment2;

public class HowTo extends FragmentActivity implements Communicator{
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.howtoshop);

    ImageButton buttonback = (ImageButton) findViewById(R.id.arrowback);

    buttonback.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(HowTo.this, MainActivity.class));
        }
    });

    Button howTo = (Button) findViewById(R.id.HowTo);

    howTo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.youtube.com/watch?v=r2sCq3_cBQ4")));
        }
    });

}
@Override
public void respond(int i) {
    android.support.v4.app.FragmentManager manager=getSupportFragmentManager();
    FragmentB f2= (FragmentB) manager.findFragmentById(fragment2);
    f2.ChangeData(i);

}

}

HowTo.xml:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000">

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearTop"
        android:orientation="vertical">



        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/imageBanner"
            android:src="@drawable/header2"
            android:layout_gravity="center_vertical"
            android:scaleType="fitXY"/>

        <ImageButton
            android:layout_width="51dp"
            android:layout_height="51dp"
            android:id="@+id/arrowback"
            android:src="@drawable/arrowback"
            android:layout_gravity="center_vertical|left"
            android:layout_marginRight="0dp"
            android:adjustViewBounds="true"
            android:padding="5dp"
            android:scaleType="fitCenter"
            android:focusableInTouchMode="false"
            android:background="#00ffffff" />


    </FrameLayout>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:text="How To Shop Video"
        android:id="@+id/HowTo"
        android:background="#ff0000"
        android:textAlignment="center"
        android:textColor="#ffffff"
        android:textSize="30dp"
        android:gravity="center_vertical" />

    <fragment
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:name="android.support.v4.app.ListFragment"
        android:id="@+id/fragment" />

    <fragment
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:name="android.support.v4.app.DialogFragment"
        android:id="@+id/fragment2" />

</LinearLayout>

片段A类:

package be.ehb.dt.taakandroid;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class FragmentA extends Fragment implements          AdapterView.OnItemClickListener {
ListView list;
Communicator communicator;

public View onCreatewView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_a,container,false);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    communicator= (Communicator) getActivity();
    list= (ListView) getActivity().findViewById(R.id.listView);
    ArrayAdapter adapter= ArrayAdapter.createFromResource(getActivity(),R.array.titels, android.R.layout.simple_expandable_list_item_1);
    list.setAdapter(adapter);
    list.setOnItemClickListener(this);
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int i, long l) {
    communicator.respond(i);
}
}

Fragment_a.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/listView"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

片段B类:

package be.ehb.dt.taakandroid;
   import android.content.res.Resources;
   import android.os.Bundle;
   import android.support.v4.app.Fragment;
   import android.view.LayoutInflater;
   import android.view.View;
   import android.view.ViewGroup;
   import android.widget.TextView;

   public class FragmentB extends Fragment{
    TextView text;

    public View onCreatewView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

       final View view= inflater.inflate(R.layout.fragment_b,container,false);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        text= (TextView) getActivity().findViewById(R.id.textView);
    }

    public void ChangeData(int i){
        Resources res =getResources();
        String[] antwoorden = res.getStringArray(R.array.antwoorden);
        text.setText(antwoorden[i]);
    }
    }

fragment_b.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />
</RelativeLayout>

PS:我是新手:)

【问题讨论】:

  • 分享fragmentA的代码
  • @Younas Bangash 添加:)

标签: java android xml android-layout android-fragments


【解决方案1】:

从您的布局 XML 中删除以下内容:

<fragment
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:name="android.support.v4.app.DialogFragment"
    android:id="@+id/fragment2" />

你不能像在布局中那样使用DialogFragment

您的方法名称中还有一个错字,以后会导致类似的问题:

public View onCreatewView

应该是

@Override
public View onCreateView

在两个片段中。

【讨论】:

  • 是的,确实有错字,但这并不能解决错误:s
  • 编辑添加另一个问题。
  • 我无法删除片段,因为 main.class 找不到片段。我将 DialogFragment 更改为 Listfragment 并且活动开始了。片段仍在加载,因此存在问题内存左右。为什么我不能在布局中使用 DialogFragment?
猜你喜欢
  • 2016-07-11
  • 2020-06-27
  • 1970-01-01
  • 2017-09-13
  • 2013-10-07
  • 2015-05-01
  • 2014-06-18
  • 2015-01-13
  • 2013-09-10
相关资源
最近更新 更多