尝试使用fragment的时候出错
错误信息:
Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class fragment
解决:
1.首先参考了别人的解决方法:
在Activity中静态使用fragment的时候,要注意两个地方。
Fragment引用的包是:
import android.support.v4.app.Fragment;
而不是:
import android.app.Fragment;
然后Activity必须是继承FragmentActivity
import android.support.v4.app.FragmentActivity;
不然就会出现这个错误。
来自: http://blog.youkuaiyun.com/qp120291570/article/details/8451620
但是这两种错误我都没有犯。
我的fragment1:
package com.sl.pmpclient.activities.tabs.fragments;
import com.sl.pmpclient.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class ActivityListFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.tab_home_activity_fragment, container);
}
}
fragment2:
package com.sl.pmpclient.activities.tabs.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class ActivityContentFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return super.onCreateView(inflater, container, savedInstanceState);
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:name="com.sl.pmpclient.activities.tabs.fragments.ActivityListFragment"
android:id="@+id/activityListFragment"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<fragment
android:name="com.sl.pmpclient.activities.tabs.fragments.ActivityContentFragment"
android:id="@+id/activityContentFragment"
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Activity类:
package com.sl.pmpclient.activities.tabs;
import com.sl.pmpclient.R;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
public class TabActivityActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_home_activity_activity);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
}
}
而我测试 只要fragment在OnCreateView中直接调用了父类OnCreateView方法,或者使用了直接调用父类OnCreateView方法的fragment就会出现错误,所以先 不要使用没有指定layout的fragment,或者先用一个空layout代替,总之不要使用
return super.onCreateView(inflater, container, savedInstanceState);