Android 自定义BaseFragment

直接上代码:

BaseFragment代码:

package com.example.custom.fragment;import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;/*** 基本Fragment* */
public abstract class BaseFragment extends Fragment {/*** 设置数据* */protected abstract void setData(Bundle savedInstanceState);/*** 绑定布局* */protected abstract int setContentLayout();/*** 初始化组件* */protected abstract void setControls(View view);@Overridepublic void onAttach(@NonNull Context context) {super.onAttach(context);}@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setData(savedInstanceState);}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View fragmentView  = inflater.inflate(setContentLayout(),container,false);return fragmentView;}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);// 控件setControls(view);}@Overridepublic void onStart() {super.onStart();}@Overridepublic void onResume() {super.onResume();}@Overridepublic void onPause() {super.onPause();}@Overridepublic void onStop() {super.onStop();}@Overridepublic void onDestroy() {super.onDestroy();}@Overridepublic void onDetach() {super.onDetach();}
}

HomeFragment代码:

package com.example.custom.fragment;import android.os.Bundle;
import android.view.View;
import android.widget.TextView;import com.example.custom.R;public class HomeFragment extends BaseFragment{private TextView mainTv;@Overrideprotected void setData(Bundle savedInstanceState) {}@Overrideprotected int setContentLayout() {return R.layout.fragment_home;}@Overrideprotected void setControls(View view) {mainTv = view.findViewById(R.id.mainTV);mainTv.setText("Home页面");}}

HomeFragment布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/mainTV"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="home"/></LinearLayout>

使用:

(1) main_layout.xml代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><androidx.fragment.app.FragmentContainerViewandroid:id="@+id/fragment_container_view"android:layout_width="match_parent"android:layout_height="match_parent"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:orientation="horizontal"><Buttonandroid:id="@+id/homeBtn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="home"/><Buttonandroid:id="@+id/shoppingBtn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="shopping"/><Buttonandroid:id="@+id/myBtn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="my"/></LinearLayout></RelativeLayout>

(2) MainActivity.java代码:

package com.example.custom.main;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.example.custom.R;
import com.example.custom.activity.BaseActivity;
import com.example.custom.fragment.HomeFragment;
import com.example.custom.fragment.MyFragment;
import com.example.custom.fragment.ShoppingFragment;public class MainActivity extends BaseActivity {private Button home,shop,my;// 获取Fragment管理对象(此方法只能在继承AppCompatActivity中使用)private FragmentManager fragmentManager = getSupportFragmentManager();private FragmentTransaction transaction;// fragmentprivate HomeFragment homeFragment = new HomeFragment();private ShoppingFragment shoppingFragment = new ShoppingFragment();private MyFragment myFragment = new MyFragment();@Overridepublic void setData(Bundle savedInstanceState) {// 竖屏setScreenPortrait(true);}@Overridepublic int setContentLayout() {return R.layout.main_layout;}@Overridepublic void setControls() {home = findViewById(R.id.homeBtn);home.setOnClickListener(homeClick);shop = findViewById(R.id.shoppingBtn);shop.setOnClickListener(shopClick);my = findViewById(R.id.myBtn);my.setOnClickListener(myClick);// 默认home// 必须写下面的三条语句transaction = fragmentManager.beginTransaction();transaction.replace(R.id.fragment_container_view,homeFragment);transaction.commit();}View.OnClickListener homeClick = new View.OnClickListener() {@Overridepublic void onClick(View view) {// 必须写下面的三条语句transaction = fragmentManager.beginTransaction();transaction.replace(R.id.fragment_container_view,homeFragment);transaction.commit();}};View.OnClickListener shopClick = new View.OnClickListener() {@Overridepublic void onClick(View view) {// 必须写下面的三条语句transaction = fragmentManager.beginTransaction();transaction.replace(R.id.fragment_container_view,shoppingFragment);transaction.commit();}};View.OnClickListener myClick = new View.OnClickListener() {@Overridepublic void onClick(View view) {// 必须写下面的三条语句transaction = fragmentManager.beginTransaction();transaction.replace(R.id.fragment_container_view,myFragment);transaction.commit();}};}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络技术】【Kali Linux】Nmap 嗅探(一)简单扫描

一、实验环境 本次实验进行简单的Nmap扫描&#xff0c;实验使用 Kali Linux 虚拟机和 Ubuntu Linux 虚拟机完成&#xff0c;主机操作系统为 Windows 11&#xff0c;虚拟化平台选择 Oracle VM VirtualBox&#xff0c;如下图所示。 二、实验步骤 1、相关配置 Kali Linux 虚拟机…

第十一个知识点:操控BOM对象

BOM&#xff1a;浏览器对象模型 --- B/S、Object、Model window navigator screen location document history window:操作浏览器窗口 //我们可以通过一些指令控制浏览器 window.alert();//弹窗 window.innerwidth;//获取浏览器页面宽度navigator:封装了浏览器的信息…

OpenCV-32 膨胀操作

膨胀是与腐蚀相反的操作&#xff0c;基本原理是只要保证卷积核的锚点是非0值&#xff0c;周边无论是0还是非0值&#xff0c;都变为0。 使用API---dilate&#xff08;img&#xff0c; kernel&#xff0c; iterationms 1&#xff09; 示例代码如下&#xff1a; import cv2 imp…

【翻译】 Processing的安卓项目构建(译者用的是Android Studio)

原文链接&#xff1a;https://github.com/processing/processing-android/wiki/Building-Processing-for-Android&#xff0c;版本Apr 2, 2023 译者声明&#xff1a;这个文档是开源公开的&#xff0c;协议是GNU协议。译者自己得使用这个文档&#xff0c;所以才翻译的&#xff0…

常用对象和常用成员函数

常量对象与常量成员函数来防止修改对象&#xff0c;实现最低权限原则。 在Obj被定义为常量对象的情况下&#xff0c;下面这条语句是错误的。 错误的原因是常量对象一旦初始化后&#xff0c;其值就再也不能改变。因此&#xff0c;不能通过常量对象调用普通成员函数&#xff0c;因…

Windows Anaconda 运行 gempy examples。示例::

默认读者已安装&#xff1a;Anaconda. 若未安装请参考以下文章&#xff1a; Windows中如何使用 Anaconda 和 gempy地质建模 1&#xff0c;打开Anaconda Navigator: 打开后如此&#xff1a; 运行JupyterLab: launch。 打开gempy example 建模示例&#xff1a; 官方地址&#x…

医学图像安全性概述

参考文献: Insights into security and privacy issues in smart healthcare systems based on medical images 下图左侧是医疗信息共享系统,右侧是计算机辅助诊疗策略: medical image sharing security (MISS)computer-aided diagnostic (CAD)CAD security (CADS)一般在信…

各款Excel、word在线预览工具对比分析以及onlyoffice预览Excel加载时间长的解决方案

对于onlyoffice插件预览慢的问题分析&#xff1a; 研究了一下onlyoffice&#xff0c;得出以下结论&#xff01; 对于预览慢的问题&#xff0c;原因出在文件类型上&#xff0c;文件类型为低版本xls而非新版xlsx文件&#xff0c;onlyoffice服务器会自动将该文件转换为xlsx文件再…

【开源】基于JAVA+Vue+SpringBoot的停车场收费系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…

spring boot和spring cloud项目中配置文件application和bootstrap中的值与对应的配置类绑定处理

在前面的文章基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136065211 加载完文件转换为 Environment 中对应的值之后&#xff0c;接下来需要将对应的值与对应的配置类进行绑定&#xff0c;方便对应的组件取值处理接下来的操作。 对应的配置值与配置类绑定通过 Con…

3.1-媒资管理之需求分析+搭建Nacos

文章目录 媒资管理模块1 模块需求分析1.1 模块介绍1.2 业务流程1.2.1 上传图片1.2.2 上传视频1.2.3 处理视频1.2.4 审核媒资 2.2 搭建Nacos2.2.1 服务发现中心2.2.2 配置中心2.2.2.1 配置三要素2.2.2.3配置content-api 2.2.3 公用配置2.2.4 配置优先级2.2.5 导入配置文件2.2.6 …

制作jdk17+pinpoint-agent基础镜像

制作jdk17pinpoint-agent基础镜像 本文仅介绍制作镜像&#xff0c;pinpoint 知识不在此介绍&#xff0c;不了解 pinpoint 知识 &#xff0c;请先行学习 1.背景介绍 新搭建的java应用&#xff0c;基于 Springboot3.2.0 Spring6.1.1 jdk17 版本。 从Springboot3开始&#x…

机器学习系列 - Mean Shift聚类

文章目录 前言一、原理前置知识点Mean Shift计算步骤 二、应用举例-图像分割三、聚类实战-简单实例bandwidth1bandwidth2总结 前言 Mean Shift&#xff08;均值漂移&#xff09;是基于密度的非参数聚类算法&#xff0c;其算法思想是假设不同簇类的数据集符合不同的概率密度分布…

Open CASCADE学习|创建多段线与圆

使用Open CASCADE Technology (OCCT)库来创建和显示一些2D几何形状。 主要过程如下&#xff1a; 包含头文件&#xff1a;代码首先包含了一些必要的头文件&#xff0c;这些头文件提供了创建和显示几何形状所需的类和函数。 定义变量&#xff1a;在main函数中&#xff0c;定义…

Java 将TXT文本文件转换为PDF文件

与TXT文本文件&#xff0c;PDF文件更加专业也更适合传输&#xff0c;常用于正式报告、简历、合同等场合。项目中如果有使用Java将TXT文本文件转为PDF文件的需求&#xff0c;可以查看本文中介绍的免费实现方法。 免费Java PDF库 本文介绍的方法需要用到Free Spire.PDF for Java…

开源!免费!Hugging Face推出GPT商城

Hugging Face发布开源AI助手制造工具&#xff0c;与OpenAI的定制GPT形成竞争 Hugging Face今年1月31日推出一款开源AI代码库——Hugging Chat Assistants&#xff0c;允许用户轻松创建特定功能的定制AI聊天机器人。 不同于OpenAI的ChatGPT商城需要每月20美金成为会员才能使用…

springboot(ssm悦己美容院后台管理系统 美容院管理系统Java系统

springboot(ssm悦己美容院后台管理系统 美容院管理系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;springboot&#xff08;可改ssm&#xff09; vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5…

c语言--指针数组(详解)

目录 一、什么是指针数组&#xff1f;二、指针数组模拟二维数组 一、什么是指针数组&#xff1f; 指针数组是指针还是数组&#xff1f; 我们类比一下&#xff0c;整型数组&#xff0c;是存放整型的数组&#xff0c;字符数组是存放字符的数组。 那指针数组呢&#xff1f;是存放…

Scala 和 Java在继承机制方面的区别

Scala 和 Java 都是面向对象编程语言&#xff0c;都支持类的继承机制。然而&#xff0c;尽管两者在基础概念上有很多相似之处&#xff0c;但在具体的实现和语法上&#xff0c;Scala 的继承机制有其独特之处。以下是 Scala 和 Java 在继承方面的一些主要区别&#xff1a; 多重继…

编译原理实验1——词法分析(python实现)

文章目录 实验目的实现定义单词对应的种别码定义输出形式&#xff1a;三元式python代码实现运行结果检错处理 总结 实验目的 输入一个C语言代码串&#xff0c;输出单词流&#xff0c;识别对象包含关键字、标识符、整型浮点型字符串型常数、科学计数法、操作符和标点、注释等等。…