Android fragment简单用法

在静态创建fragment中

 

 注意fragment是一个类似于界面的一个元件,因此,还需要为fragment建立一个activity用于存放我们建立的fragment

也就是说需要建立一个空的activity和一个空的fragment项目,activity项目用于承载fragment项目

在fragment标签内

可以通过name属性对我们的fragment项目进行绑定

    <fragment
        android:id="@+id/fragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:layout="@layout/fragment_static"
        android:name="com.example.belowmeue.fragment.StaticFragment"/>

以下代码是fragment基本用法

public class StaticFragment extends Fragment {
    private TextView textview;
    private RadioButton radio_like,radio_dislike;

    // TODO: Rename parameter arguments, choose names that match
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    private String mParam1;
    private String mParam2;

    public StaticFragment() {
    }


    public static StaticFragment newInstance(String param1, String param2) {
        StaticFragment fragment = new StaticFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }
    //这是创建视图时调用的方法
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_static, container, false);
    }
    //这是视图创建完成后调用的方法,其中view承载的就是fragment所绑定的页面
    //也就是说可以在这个方法内对fragment页面内的元件进行操作
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        textview = view.findViewById(R.id.textview);
        radio_like = view.findViewById(R.id.ridio_like);
        radio_dislike = view.findViewById(R.id.ridio_dislike);

        radio_like.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if(b){
                    textview.setText("APP喜欢");
                }
            }
        });
        radio_dislike.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    textview.setText("APP不喜欢");
                }
            }
        });
    }
    //这是activity创建完成所调用的方法,也可以在这里面写元件操作的代码
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }
}

 动态创建fragment

动态创建跟静态创建类似

只是将fragment装在activity的方式不同

在activity中创建FragmentContainerView标签

之后在activity代码中添加FragmentManager和FragmentTransaction

具体方法如下

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dfragment);

        //防止fragmentManager被重复创建
        if(savedInstanceState == null){
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.add(R.id.fcv, DongtaiFragment.class,null)
                    .setReorderingAllowed(true)  //允许自动排序
                    .addToBackStack(null)  //创建之后添加到栈里
                    .commit()
            ;
        }

    }

 

posted @ 2022-05-19 14:50  软工小蜗牛  阅读(261)  评论(0编辑  收藏  举报