关于Fragment嵌套Fragment并且使用tablayout的错误
来源:互联网 发布:淘宝省钱网站 编辑:程序博客网 时间:2024/06/05 15:11
今天碰到了这样一个问题,找了很多资料都没解决,记录一下,留给有缘人,希望你们不用花这么多时间
是这样的解决的:我尝试了在activity中使用tablayout+viewpager 并且使用FragmentStatePagerAdapter作为适配器,是没有问题的,但是嵌套Fragment就出现了问题,后来发现是上下文用错了,应该是嵌套的Fragment就不能使用全局的上下文,改成activity的上下文就可以了
同时注意嵌套Fragment拿到FragmentManager要用这个方法
getChildFragmentManager()
错误:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.oschina, PID: 15882 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.oschina/com.example.oschina.ui.activity.YhdActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.design.widget.TabLayout at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.design.widget.TabLayout
下面是Activity
package com.example.oschina.ui.activity;import android.os.Bundle;import android.support.v4.app.FragmentManager;import android.support.v7.app.AppCompatActivity;import com.example.oschina.R;import com.example.oschina.ui.fragment.homefragment.MoveStirFragment;public class YhdActivity extends AppCompatActivity {/* @Bind(R.id.stirfragment_tl) TabLayout mStirfragmentTl; @Bind(R.id.stirfragment_vp) ViewPager mStirfragmentVp; private List<MoveStirFragmentInfo> mShowItems = new ArrayList<>();*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_yhd); /*ButterKnife.bind(this);*//* //通过Stringarray数组去获取字符串 String[] titles = Utils.getStringArray(R.array.tab_names); mShowItems.add(new MoveStirFragmentInfo(titles[0], new NewStirFragment())); mShowItems.add(new MoveStirFragmentInfo(titles[1], new HotStirFragment())); mShowItems.add(new MoveStirFragmentInfo(titles[2], new MyStirFragment())); MoveStirPagerAdapter adapter = new MoveStirPagerAdapter(getSupportFragmentManager(), mShowItems); mStirfragmentVp.setAdapter(adapter); mStirfragmentTl.setupWithViewPager(mStirfragmentVp);*/ FragmentManager supportFragmentManager = getSupportFragmentManager(); supportFragmentManager.beginTransaction().add(R.id.main_fragment,new MoveStirFragment()).commit(); }}
下面是外层的Fragment
package com.example.oschina.ui.fragment.homefragment;import android.content.res.ColorStateList;import android.graphics.Color;import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.example.oschina.OSChinaApplication;import com.example.oschina.R;import com.example.oschina.adapter.MoveStirPagerAdapter;import com.example.oschina.bean.MoveStirFragmentInfo;import com.example.oschina.ui.fragment.strifragment.HotStirFragment;import com.example.oschina.ui.fragment.strifragment.MyStirFragment;import com.example.oschina.ui.fragment.strifragment.NewStirFragment;import com.example.oschina.utils.Utils;import java.util.ArrayList;import java.util.List;/** * 动弹Fragment * Created by Sang on 2016-12-04. */public class MoveStirFragment extends Fragment { private TabLayout mStirfragmentTl; private ViewPager mStirfragmentVp; private List<MoveStirFragmentInfo> mShowItems = new ArrayList<>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View successView = View.inflate(**OSChinaApplication.mContext**, R.layout.fragment_movestir, null); mStirfragmentTl = (TabLayout) successView.findViewById(R.id.stirfragment_tl); mStirfragmentVp = (ViewPager) successView.findViewById(R.id.stirfragment_vp); initView(); return successView; } private void initView() { String[] titles = Utils.getStringArray(R.array.tab_names); mShowItems.add(new MoveStirFragmentInfo(titles[0], new NewStirFragment())); mShowItems.add(new MoveStirFragmentInfo(titles[1], new HotStirFragment())); mShowItems.add(new MoveStirFragmentInfo(titles[2], new MyStirFragment())); MoveStirPagerAdapter adapter = new MoveStirPagerAdapter(getChildFragmentManager(), mShowItems); mStirfragmentVp.setAdapter(adapter); mStirfragmentTl.setupWithViewPager(mStirfragmentVp); mStirfragmentTl.setTabTextColors(ColorStateList.valueOf(Color.BLACK)); }}
只要将上面加粗的全局上下文改成getContext()就好了
1 0
- 关于Fragment嵌套Fragment并且使用tablayout的错误
- tablayout + viewpager + fragment 实现标签,并且部分fragment里面嵌套viewpager+fragment
- android tablelayout嵌套tablayout Fragment嵌套Fragment
- 关于ViewPager嵌套Fragment,Fragment使用GridView导致的问题
- Fragment 嵌套 Tablayout+ViewPager+fragment 遇到的问题
- TabLayout的简单使用(TabLayout+Fragment+ViewPager)
- TabLayout+ViewPage+Fragment的使用
- Fragment的嵌套使用
- Fragment嵌套引起的错误
- Fragment嵌套Fragment使用的一般框架
- 关于在Fragment中使用多组ViewPager+TabLayout出现的部分Fragment不显示问题
- 关于TabLayout+ViewPager+Fragment 简单明了的用法
- TabLayout联合Fragment使用
- Fragment+ViewPager+TabLayout 使用
- 关于Fragment里面嵌套fragment
- 嵌套使用fragment的问题
- TabLayout+ViewPage+Fragment简单使用的方法
- 整理TabLayout+ViewPager+Fragment的使用
- JavaScript 精粹 基础 进阶(4)对象
- snailsvn mac上的versions
- 469. Convex Polygon
- Redmine 插件安装
- LAMP 安装--随笔
- 关于Fragment嵌套Fragment并且使用tablayout的错误
- 性能优化系统学习(一):基础知识
- spark二次排序
- Arduino学习笔记~(1)
- jquery动态增减行
- 客户机通过xShell远程访问Ubuntu15.04/16.04LTS连接失败的解决方法
- 301. Remove Invalid Parentheses
- python3-操作SQLite、创建表、添加数据、查询数据
- 常见的 Git 命令: