Android开发Android技术知识

Activity之Fragment

2019-09-28  本文已影响0人  拨云见日aaa

一、Fragment生命周期

Fragment的生命周期

Fragment的生命周期和Activity的生命周期非常像,比Activity多了onAttach()、onCreateView()、onActivityCreate、onDestroyView、onDetach方法

Fragment的生命周期是由Activity的FragmentManager的管理的并不是由系统管理的

推荐阅读Fragment不为人知的细节

二、静态加载Fragment

(1)用法简介
(2)代码示例

Fragment代码

public class AFragment extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle saveInstanceState){
     View view=inflater.inflate(R.layout.a_fragment_layout,parent);
     return view;
    }
}

布局文件代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:gravity="center|top"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment
        android:id="@+id/a_fragment"
        android:name="com.jty.myapplication25.AFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
运行结果
静态加载

三、动态加载

(1)用法说明
(2)代码示例

AFragment(BFragment一样)

public class AFragment extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle saveInstanceState){
        View view=inflater.inflate(R.layout.a_fragment_layout,null);
        return view;
    }
}

Activity中的代码

public class MainActivity extends AppCompatActivity {
    FragmentTransaction transaction;
    FragmentManager manager;
    private static final String A_FRAGMENT="1";
    private static final String B_FRAGMENT="2";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        manager=getSupportFragmentManager();

}
    public void click1(View v){
        transaction=manager.beginTransaction();
        Fragment fragment=manager.findFragmentByTag(A_FRAGMENT);
        if(fragment==null){
         fragment=new AFragment();
         transaction.replace(R.id.parent1,fragment,A_FRAGMENT);
         transaction.commit();
     }
    }
    public void click2(View v){
        transaction=manager.beginTransaction();
        Fragment fragment=manager.findFragmentByTag(B_FRAGMENT);
        if(fragment==null){
            fragment=new BFragment();
            transaction.replace(R.id.parent1,fragment,B_FRAGMENT);
            transaction.commit();
        }
    }
}
运行效果
点击AFragment按钮切换到AFragment

四、Fragment+ViewPager

几篇讲解:

上一篇 下一篇

猜你喜欢

热点阅读