Android:fragment的使用和事件的点击响应

1. 特性
  • 具备生命周期,感觉就像是子activity

  • 但是必须委托在activity中才能运行。


2.使用
  1. 先在主文件 也就是main_activity.xml中布局

    可以直接通过name属性来指定要添加的fragment的类名,要写全名称

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!-- 可以直接通过name属性来指定要添加的fragment的类名,要写全名称-->
        <FrameLayout
            android:id="@+id/main_page_container"
            android:name:"com.example.demo.fragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </RelativeLayout>
    
  2. 编写fragment.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/p_ds"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:gravity="center"
            android:textSize="@dimen/size_20"
            android:text="数据测试"/>
    </RelativeLayout>
    
  3. 加载fragment的布局文件

    1. 需要继承Fragment类

    2. 需要重写 onCreateView ()这个方法。

    3. 使用inflate()方法去加载布局文件。

    4. 返回加载的视图给activity。

  4. public class FragmentAnalysis extends Fragment {
        private View view;
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            if(view==null){
                view = inflater.inflate(R.layout.fragment, container, false);
            }
            return view;
        }
    
3.事件的点击

对于fragment的事件响应,可以有两个方法

  1. 既然fragment是依附activity中,那么在activity中进行事件的响应。但是对于 viewpageer+fragment的布局来说,方法一不是很合适。
  2. 在fragment中重写 onActivityCreated()
/**
 * 在fragment中的点击事件的响应,得放在onActivityCreated函数中。
 * 使用getActivity().findViewById()函数去获取到响应的组件
 * @param savedInstanceState
 */
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    dataSource = getActivity().findViewById(R.id.p_ds);
    dataSource.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dataSource.setText("nihao");
        }
    });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值