我正在尝试通过代码在活动中添加片段以在它们之间进行交换,但我不断得到以下因素: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>
答案 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>