Android Fragment练习

参考文档: android developer training basics 

1. 一个activity可以用若干个fagment组成,用fragment组成的好处是可以适用各种类型的屏幕。典型例子是平板和手机: 
Android Fragment练习_第1张图片

  1. 生成一个fragment步骤:

    • 单独用xml声明一个fragment, 可以是一个FrameLayout,也可以是一个TextView

    • 创建一个Fragment子类,重写onCreateView

    • 声明一个fragment的layout, 放在目录res/layout下 

    • onCreateView有一个参数,让Fragment子类绑定到layout资源

  2. 如何将fragment装入activity,在Activity::onCreate()里, 创建Fragment类:

      



    最后一行代表将这个fragment装入activity指定的fragment layout里

    1. // Create an instance of ExampleFragment

    2. HeadlinesFragment firstFragment = new HeadlinesFragment();


    3. // In case this activity was started with special instructions from an Intent,

    4. // pass the Intent's extras to the fragment as arguments

    5. firstFragment.setArguments(getIntent().getExtras());


    6. // Add the fragment to the 'fragment_container' FrameLayout

    7. getSupportFragmentManager().beginTransaction()

    8. .add(R.id.fragment_container, firstFragment).commit();

  3. 在activity里也可以通过xml静态嵌入一个fragment:

          





    android:name里指定实现的Fragment

    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    2. android:orientation="horizontal"

    3. android:layout_width="match_parent"

    4. android:layout_height="match_parent">


    5. <fragment android:name="com.example.android.fragments.HeadlinesFragment"

    6. android:id="@+id/headlines_fragment"

    7. android:layout_weight="1"

    8. android:layout_width="0dp"

    9. android:layout_height="match_parent" />

    10. /LinearLayout>

  4. 在fragment attach到activity的时候,会调用Fragment::onAttach(acitivity),重载这个函数可以实现Fragment和Activity直接的关联操作。常用的方法是让activity作为fragment的listener:

      



       

      



    • 让activity实现这个listener接口

    • 在重载的Fragment::onAttach(activity)里,保存这个listener

    • 在fragment定义该fragment的listener接口:

    1. public void onAttach(activity) {

    2. mCallback = (OnMyFragmentListener)activity;

    3. }


    4. class MyFragment extends Fragment {

    5. public interface OnMyFragmentListener {

    6. public void onMyButtonClicked();

    7. }

    8. }

你可能感兴趣的:(android,Activity,Fragment)