Android菜鳥ノート-Fragment日常使用記録
2885 ワード
以下は私が日常的にFragmentを使う時に出会ったいくつかの基礎知識点で、印象を深めるために記録します.
1.xml layoutでFragmentを静的に追加する場合、宿主ActivityはFragmentActivityを継承する必要があります.
2.コードにFragmentが動的にロードされた場合、Fragmentが表示する領域はlayoutのFrameLayoutとなる
3.Fragmentでlayoutに基づいてUIを生成するコードは:
4.ActivityでFragmentを動的に追加する簡単なコードは次のとおりです.
7.ActivityまたはFragmentは他のFragmentと値を伝達する:
まずonCreate()メソッドにsetHasOptionsMenu(true)を追加する必要があります.
そして上書き
onCreateOptionsMenuメソッド:
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);
}