Android菜鳥ノート-Fragment日常使用記録

2885 ワード

以下は私が日常的にFragmentを使う時に出会ったいくつかの基礎知識点で、印象を深めるために記録します.
1.xml layoutでFragmentを静的に追加する場合、宿主ActivityはFragmentActivityを継承する必要があります.
2.コードにFragmentが動的にロードされた場合、Fragmentが表示する領域はlayoutのFrameLayoutとなる
 

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);

	}