zoukankan      html  css  js  c++  java
  • Android Fragment 嵌套使用报错

    在新的SDK每次创建activity时,会自己主动生成 
    <pre name="code" class="java">public static class PlaceholderFragment extends Fragment

    
    

    fragment模块,在该模块的基础上进行嵌套fragment代码例如以下:

    <pre name="code" class="java">public static class PlaceholderFragment extends Fragment {
    
    		static FragmentManager fm;
    		public PlaceholderFragment() {		
       			fm=getChildFragmentManager();
    		}
    		@Override  
    		public void onCreate(Bundle savedInstanceState) {  
    		    super.onCreate(savedInstanceState);  	
    		 
    	    }  
    		
    		@Override
    		public View onCreateView(LayoutInflater inflater, ViewGroup container,
    				Bundle savedInstanceState) {
    			View rootView=LayoutInflater.from(getActivity())
    					.inflate(R.layout.tab, null);
    			
    			if(fm.findFragmentByTag("haha")==null)
    			{
    				Fragment1 f1=new Fragment1();
    				fm.beginTransaction().add(R.id.frame_tab,f1,"haha").commit();
    			}
    			return rootView;
    		}

    
    结果报错例如以下:
    


    总之就是说Acitivity被被销毁了。

    原因:

    fm=getChildFragmentManager();在 <span style="font-family: Arial, Helvetica, sans-serif;">PlaceholderFragment 的构造函数中调用,此时它还没有创建onCreate,自然获取不到Fragment及activity了,因此将其写入</span>
    <span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="java"><pre name="code" class="java">public void onCreate(Bundle savedInstanceState) {  
    		    super.onCreate(savedInstanceState);  		 
    			fm=getChildFragmentManager();
    	    }  
    

    错误解决,大家一定要对Fragment及activity生命周期注意啊。

    
    
    
    

  • 相关阅读:
    墙内正确安装docker和docker-compose的方法
    VS2015编译ncnn
    caffe模型转ncnn模型
    Ncnn-Installation-on-Windows
    CV2 Fourcc解析
    手动安装OpenCV下的IPP加速库
    Ubuntu下安装Caffe
    Linux安装CUDA教程参考
    最正确的姿势安装cudnn,网上大多数教程都太坑了
    安装多版本cuda时,nvcc和cuda版本不一致问题
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4063251.html
Copyright © 2011-2022 走看看