引起:android.view.InflateException:二进制XML文件行#13:错误膨胀类片段

时间:2016-11-20 15:28:37

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

我正在尝试通过代码在活动中添加片段以在它们之间进行交换,但我不断得到以下因素:android.view.InflateException:二进制XML文件行#13:错误导致类片段&#39; < / p>

以下是主要活动的代码:

package com.example.user.timetable_test;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;


public class Set_Up extends FragmentActivity{

    //MiscData data = MiscData.getInstance();


    @Override
    protected void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set__up);

        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();

        Fragment wel = new frag_welcome();

        wel.setArguments(getIntent().getExtras());

        // Add the fragment to the 'fragment_container' FrameLayout
        ft.add(R.id.fragment_container, wel);


    }


}

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:id="@+id/activity_set_up"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.user.timetable_test.Set_Up">
    <fragment
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    />
</RelativeLayout>

对于片段

package com.example.user.timetable_test;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class frag_welcome extends Fragment{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState){

        View view = inflater.inflate(R.layout.frag_set_up_welcome, container, false);

        return view;
    }
}

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:text="@string/welcome_to_the_timetable_app"
        android:layout_width="150dp"
        android:layout_height="wrap_content" android:id="@+id/textView2"
        android:layout_marginTop="100dp"
        android:textAppearance="@style/TextAppearance.AppCompat.Headline"
        android:textAlignment="center"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"/>
    <Button
        android:text="@string/start_set_up_butt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="69dp"
        android:id="@+id/startSetUp" style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_below="@+id/textView3" android:layout_centerHorizontal="true"/>
    <TextView
        android:text="@string/press_start_set_up_to_start"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        android:textAppearance="@style/TextAppearance.AppCompat.Headline"
        android:textAlignment="center"
        android:layout_marginTop="24dp"
        android:layout_width="170dp" android:layout_below="@+id/textView2"
        android:layout_centerHorizontal="true"/>
</RelativeLayout>

2 个答案:

答案 0 :(得分:2)

阅读你的代码......

  

//将片段添加到'fragment_container'FrameLayout

您可能需要更改

 <fragment
    android:id="@+id/fragment_container"

 <FrameLayout 
    android:id="@+id/fragment_container"

或者,不使用Java代码创建Fragment,只需将class属性添加到XML片段块即可。从文档......

  

android:name中的<fragment>属性指定要在布局中实例化的Fragment类。

否则,您可以像这样显示片段

Fragment wel = new WelcomeFragment();  // correct naming schema 
wel.setArguments(getIntent().getExtras());
getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.fragment_container, wel)
    .commit();

答案 1 :(得分:0)

声明你的fragment_container,

   <?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:id="@+id/activity_set_up"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.user.timetable_test.Set_Up">

    <!-- Can be any child of ViewGroup: RelativeLayout/LinearLayout/... -->
    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    />
</RelativeLayout>