Duplicate id, tag null, or parent id 0x0 with another fragment 解决方案
2015-12-25 17:59
344 查看
转:http://blog.csdn.net/hack8/article/details/25432503
在Fragment中如果内嵌了Fragment,那么在多次点击后内嵌的Fragment会遭成上述的问题Duplicate id tag null or parent id 0x0,因此我们需要在Fragment的OnDestroyView方法中销毁内嵌的Fragment,这样就可以解决上述的问题,具体代码如下:
[java] view
plaincopyprint?
public class CopyOfSampleTitlesTriangle extends CopyOfBaseSampleFragment {
private UserProfileFragment userProfileFragment;
@Override
public void onDestroyView()
{
// TODO Auto-generated method stub
super.onDestroyView();
//内嵌的Fragment UserProfileFragment
UserProfileFragment userProfileFragment1 =(UserProfileFragment)getFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);
if(userProfileFragment1 !=null ){
getFragmentManager().beginTransaction().remove(userProfileFragment1).commit();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
// TODO Auto-generated method stub
//return super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fr_user_profile, null);
mAdapter = new TestFragmentAdapter(getChildFragmentManager());
mPager = (ViewPager)view.findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
TitlePageIndicator indicator = (TitlePageIndicator)view.findViewById(R.id.viewpager_indicator);
indicator.setViewPager(mPager);
indicator.setFooterIndicatorStyle(IndicatorStyle.Triangle);
mIndicator = indicator;
final float density = getResources().getDisplayMetrics().density;
//indicator.setBackgroundColor(0x18FF0000);
indicator.setFooterColor(Color.WHITE);
indicator.setFooterLineHeight(1 * density); //1dp
indicator.setFooterIndicatorHeight(3 * density); //3dp
//indicator.setFooterIndicatorStyle(IndicatorStyle.Underline);
//indicator.setTextColor(0xAA000000);
//indicator.setSelectedColor(0xFF000000);
indicator.setSelectedBold(true);
userProfileFragment =(UserProfileFragment)getFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);
//userProfileFragment =(UserProfileFragment)getChildFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);
User user=new User();
user.fullName="test";
user.description="test description";
user.email="test@gmail.com";
user.isFollowing=true;
user.shortName="test";
userProfileFragment.setUser(user);
return view;
}
}
在Fragment中如果内嵌了Fragment,那么在多次点击后内嵌的Fragment会遭成上述的问题Duplicate id tag null or parent id 0x0,因此我们需要在Fragment的OnDestroyView方法中销毁内嵌的Fragment,这样就可以解决上述的问题,具体代码如下:
[java] view
plaincopyprint?
public class CopyOfSampleTitlesTriangle extends CopyOfBaseSampleFragment {
private UserProfileFragment userProfileFragment;
@Override
public void onDestroyView()
{
// TODO Auto-generated method stub
super.onDestroyView();
//内嵌的Fragment UserProfileFragment
UserProfileFragment userProfileFragment1 =(UserProfileFragment)getFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);
if(userProfileFragment1 !=null ){
getFragmentManager().beginTransaction().remove(userProfileFragment1).commit();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
// TODO Auto-generated method stub
//return super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fr_user_profile, null);
mAdapter = new TestFragmentAdapter(getChildFragmentManager());
mPager = (ViewPager)view.findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
TitlePageIndicator indicator = (TitlePageIndicator)view.findViewById(R.id.viewpager_indicator);
indicator.setViewPager(mPager);
indicator.setFooterIndicatorStyle(IndicatorStyle.Triangle);
mIndicator = indicator;
final float density = getResources().getDisplayMetrics().density;
//indicator.setBackgroundColor(0x18FF0000);
indicator.setFooterColor(Color.WHITE);
indicator.setFooterLineHeight(1 * density); //1dp
indicator.setFooterIndicatorHeight(3 * density); //3dp
//indicator.setFooterIndicatorStyle(IndicatorStyle.Underline);
//indicator.setTextColor(0xAA000000);
//indicator.setSelectedColor(0xFF000000);
indicator.setSelectedBold(true);
userProfileFragment =(UserProfileFragment)getFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);
//userProfileFragment =(UserProfileFragment)getChildFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);
User user=new User();
user.fullName="test";
user.description="test description";
user.email="test@gmail.com";
user.isFollowing=true;
user.shortName="test";
userProfileFragment.setUser(user);
return view;
}
}
相关文章推荐
- 【LEETCODE】190-Reverse Bits
- 懒加载、plist文件数据加载、图片显示
- Android Studio导入第三方类库的方法
- C# 委托及各种写法
- java中的内部类总结
- mongodb格式化结果
- 要用的触发器
- 毕业论文查重网站
- iOS UI设计: SnapKit 或者 Masonry 时候 与StoryBoard混合时候IB报错冲突
- xml解析
- 简单的C程序<二>:字符间空格处理
- Spring MVC 4 学习2:XML配置,让Spring M跑起来
- linux centos7 svn server 搭建 支持http访问
- 使用java实现去除各种空格
- python中文编码问题
- popen()和pclose()
- JavaScript权威指南--Chapter5 语句
- CSS禁止选择DIV内的文本
- NSMutableString 常用操作
- NSError