Duplicate id, tag null, or parent id 0x0 with another fragment 解决方案

来源:互联网 发布:电脑做账软件 编辑:程序博客网 时间:2024/05/16 12:30

转: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?在CODE上查看代码片派生到我的代码片
  1. public class CopyOfSampleTitlesTriangle extends CopyOfBaseSampleFragment {  
  2.    
  3.  private UserProfileFragment userProfileFragment;  
  4.    
  5.  @Override  
  6.   
  7. public void onDestroyView()  
  8.  {  
  9.   // TODO Auto-generated method stub  
  10.   super.onDestroyView();  
  11.   
  12.  //内嵌的Fragment UserProfileFragment   
  13.   UserProfileFragment userProfileFragment1 =(UserProfileFragment)getFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);  
  14.   if(userProfileFragment1 !=null ){  
  15.    getFragmentManager().beginTransaction().remove(userProfileFragment1).commit();  
  16.   }  
  17.   
  18.   
  19. @Override  
  20.  public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  21.    Bundle savedInstanceState)  
  22.  {  
  23.   // TODO Auto-generated method stub  
  24.   //return super.onCreateView(inflater, container, savedInstanceState);  
  25.   View view = inflater.inflate(R.layout.fr_user_profile, null);  
  26.   mAdapter = new TestFragmentAdapter(getChildFragmentManager());  
  27.   
  28.         mPager = (ViewPager)view.findViewById(R.id.pager);  
  29.         mPager.setAdapter(mAdapter);  
  30.   
  31.         TitlePageIndicator indicator = (TitlePageIndicator)view.findViewById(R.id.viewpager_indicator);  
  32.         indicator.setViewPager(mPager);  
  33.         indicator.setFooterIndicatorStyle(IndicatorStyle.Triangle);  
  34.         mIndicator = indicator;  
  35.           
  36.         final float density = getResources().getDisplayMetrics().density;  
  37.         //indicator.setBackgroundColor(0x18FF0000);  
  38.           
  39.         indicator.setFooterColor(Color.WHITE);  
  40.         indicator.setFooterLineHeight(1 * density); //1dp  
  41.         indicator.setFooterIndicatorHeight(3 * density); //3dp  
  42.         //indicator.setFooterIndicatorStyle(IndicatorStyle.Underline);  
  43.         //indicator.setTextColor(0xAA000000);  
  44.         //indicator.setSelectedColor(0xFF000000);  
  45.         indicator.setSelectedBold(true);  
  46.           
  47.         userProfileFragment =(UserProfileFragment)getFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);  
  48.           
  49.         //userProfileFragment =(UserProfileFragment)getChildFragmentManager().findFragmentById(R.id.fr_user_profile_user_data_fragment);  
  50.         User user=new User();  
  51.         user.fullName="test";  
  52.         user.description="test description";  
  53.         user.email="test@gmail.com";  
  54.         user.isFollowing=true;  
  55.         user.shortName="test";  
  56.          
  57.         userProfileFragment.setUser(user);  
  58.          
  59.     
  60.   return view;  
  61.  }  
  62.   
  63.   
  64.  }  

0 0
原创粉丝点击