• 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生命周期注意啊。

    
    
    
    

  • 相关阅读:
    js弹出文字
    javascript函数的使用
    php笔记-双引号内的变量会被解释,而单引号内的变量则原样输出
    单独编译源码树下的模块
    内核模块开机自动加载和黑名单
    [转]Linux中设置服务自启动的三种方式
    rpm打包
    APC to USB
    [转]创建一个虚拟盘
    编译打印输出重定向
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4063251.html
Copyright © 2020-2023  润新知