Android菜鸟笔记-Fragment日常使用记录

以下为本人日常使用Fragment时遇到的一些基础知识点,记录以加深印象:

1. xml layout中静态添加Fragment时,宿主Activity必须继承FragmentActivity

2. 代码中动态加载Fragment时,Fragment显示的区域为layout中的FrameLayout

 <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

3.Fragment中根据layout生成UI的代码为:

@Override
	public View onCreateView(LayoutInflater inflater,
			@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		View view = inflater.inflate(R.layout.fragment_main,container, false);

		return view;
	}

4. Activity中动态添加Fragment的简单代码为:
getFragmentManager().beginTransaction().replace(R.id.frame_container, mFragment).commit();
5.加载Fragment的时候可以添加动画效果:
getFragmentManager().beginTransaction().setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right).replace(R.id.frame_container, mFragment).commit();
6.Fragment加载其它Fragment时通过getActivity().getSupportFragmentManager()获取FragmentManager对象

7. Activity或者Fragment与其他Fragment传值:

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();  
bundle.putString("argument", value);  
fragment.setArguments(bundle);  
8.单一Fragment被复用时,要保证每次创建的唯一性,同时来回切换时还要避免反复创建,我们可以通过创建它时传递一个tag参数来标记,这样就可以通过tag来获取了:
private void showFragment(int position,String tag)
	{
		FragmentManager fm = getFragmentManager();
		FragmentTransaction transaction = fm.beginTransaction(); 
                Fragment currentFragment = fm.findFragmentById(R.id.frame_container);
                Fragment toFragment = fm.findFragmentByTag(tag);
        
        if(toFragment!=null)
        {
        	if(!toFragment.isVisible())
        	{
                transaction.hide(currentFragment);
            	transaction.show(toFragment);
            	transaction.commit();
        	}
        }
        else
        {
        	transaction.hide(currentFragment);
        	Fragment fragment = new Fragment();
        	transaction.add(R.id.frame_container,fragment, tag);
        	transaction.commit();
        }
       
	}
9. Fragment需要创建menu时:
需要先在onCreate()方法里添加setHasOptionsMenu(true);, 然后覆写 onCreateOptionsMenu方法:
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		setHasOptionsMenu(true);
	 
	}
	 @Override
	    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
		 
	        menu.clear();//清除原先activity的menu

	        inflater.inflate(R.menu.work, menu);//加载自己的menu

	        super.onCreateOptionsMenu(menu, inflater);

	}







你可能感兴趣的:(Android菜鸟笔记-Fragment日常使用记录)