Fragment相关内容

ABAP OO - ALV_TREE例程 项目上比较少有用到ALV_TREE的报表功能,刚好项目上有写了一次,也查阅大量的范例,整合了一写法,给自己做一下笔记。 程序包含功能按钮,按钮下拉,F4帮助,读取选中行,字段双击触发事件,字段前置图标,更新节点,获取节点数据,获取全部子节点,递归算法,DMS模块:创建文档功能,创建文档链接,SNRO创建流水号,缓存数据,下次用户加载进来继续操作。 *&---------------------------------------------------------------------* *&a 阅读详情

1.什么是Fragment?

Fragment碎片,即如同贴纸一样贴在Activity上面,用于向用户显示贴纸上的内容。可以在一个Activity中用多个Fragment组合来构建多窗格的UI,以及在多个Activity中重复使用某个Fragment。需要依赖宿主Activity,有自己的生命周期。

2.为什么要用Fragment?

Fragment可以较好的完成局部布局的刷新,且可以完成相关屏幕适配兼容。代码复用。特别适用于模块化的开发,因为一个Fragment可以被多个Activity嵌套,有个共同的业务模块就可以复用了,是模块化UI的良好组件

3.Fragment的生命周期

此图网上寻找转载

4.Fragment的静态加载

首先创建好一个Fragment与Activity,完成Fragment与Activity的布局文件Xml,在MainActivity的布局文件中用将将要插入的Fragment位置放好。设置name来绑定Fragment。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="horizontal"
    tools:context="com.example.wang3.myapplication.MainActivity">


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <Button
            android:id="@+id/nvbt"
            android:layout_width="80dp"
            android:layout_height="40dp"
            android:text="女装" />

        <Button
            android:id="@+id/nanbt"
            android:layout_width="80dp"
            android:layout_height="40dp"
            android:text="男装" />

    </LinearLayout>
    <fragment
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:name="com.example.wang3.myapplication.BlankFragment"
       />
</LinearLayout>

5.Fragment的动态加载

Fragment的动态加载实现点击按钮完成Fragment的动态加载切换,所以先建立几个Fragment,完成它们的布局文件,在MainActivity的布局文件中设置好所需控件,并绑定好Id,设置监听。在xml中用帧布局来确定Fragment的位置。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="horizontal"
    tools:context="com.example.wang3.myapplication.MainActivity">


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <Button
            android:id="@+id/nvbt"
            android:layout_width="80dp"
            android:layout_height="40dp"
            android:text="女装" />

        <Button
            android:id="@+id/nanbt"
            android:layout_width="80dp"
            android:layout_height="40dp"
            android:text="男装" />

    </LinearLayout>

    <FrameLayout
        android:id="@+id/framelayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </FrameLayout>
</LinearLayout>

在将Fragment利用 FragmentManager和FragmentTransaction创建对象,transaction.replace来替换Fragment。最后提交事务。

package com.example.wang3.myapplication;


import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button nbt;//定义按钮对象
    private Button nnbt;//对象二
    private NewFragment fragment1;//定义碎片对象
    private BlankFragment fragment2;//碎片二

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BlindID();//绑定ID
    }

    private void BlindID() {
        nbt = findViewById(R.id.nvbt);
        nnbt = findViewById(R.id.nanbt);
        nbt.setOnClickListener(this);
        nnbt.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        FragmentManager manager=getFragmentManager();//创建fragmentManager对象
        FragmentTransaction transaction=manager.beginTransaction();//创建FragmentTransaction对象
        switch (view.getId()) {
            case R.id.nvbt:
                if (fragment1==null)//判断碎片1是否为空
                {
                    fragment1=new NewFragment();//创建实体碎片对象
                }
                transaction.replace(R.id.framelayout,fragment1);//使用一个fragment替换当前真布局
                break;
            case R.id.nanbt:
                if (fragment2==null)//同理
            {
                fragment2=new BlankFragment();
            }
                transaction.replace(R.id.framelayout,fragment2);//同理
                break;
        }
     transaction.commit();//提交事务
    }
}

6.Fragment与Viewpager点击滑动切换

首先创建好多个Fragment,完成想要的布局文件。并创建出MainActivity完成相关的xml布局中的控件。
用Viewpager来确定Fragment的位置。设置好相关ID。

<android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/linerlayout"
        android:layout_below="@id/text1">

    </android.support.v4.view.ViewPager>

重点是将Fragment放入Viewpager中,所以我们需要建立好Fragment与Viewpager之间的适配器。来将两者连接起来。

创建一个Adaper继承FragmentPagerAdapter并实现父类方法,然后定义一个List数组来传递Fragment
返回数组的size和position。

public class FragmentAdapter extends FragmentPagerAdapter {
    private List<Fragment> fragmentList;

    public FragmentAdapter(FragmentManager fm, List<Fragment> fragmentList) {
        super(fm);
        this.fragmentList = fragmentList;
    }

    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

    @Override
    public int getCount() {
        return fragmentList.size();
    }
}

所要我们需要创建一个Fragment数组来存放我们的Fragment。

  private ArrayList<Fragment> fragmentArrayList = new ArrayList<>();

然后创建好Fragment的实体对象并且加入数组内。

        contextFragment = new ContextFragment();
        friendFragment = new FriendFragment();
        meFragment = new MeFragment();
        fragmentArrayList.add(contextFragment);
        fragmentArrayList.add(friendFragment);
        fragmentArrayList.add(meFragment);

绑定适配器

 FragmentAdapter fragmentAdapter = new FragmentAdapter(getSupportFragmentManager(), fragmentArrayList);
        viewPager.setAdapter(fragmentAdapter);

为了按钮点击实现滑动效果,我们先定义好所需按钮,绑定ID和设置监听。

    private Button button;
    private Button button2;
    private Button button3;
 private void BlindID() {
        button = findViewById(R.id.bt1);
        button2 = findViewById(R.id.bt2);
        button3 = findViewById(R.id.bt3);
        viewPager = findViewById(R.id.viewpager);
        textView1=findViewById(R.id.text1);
        button.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);

    }

最后设置监听内容

  @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.bt1:
                viewPager.setCurrentItem(0);
                break;
            case R.id.bt2:
                viewPager.setCurrentItem(1);
                break;
            case R.id.bt3:
                viewPager.setCurrentItem(2);
                break;
        }

    }

及完成滑动点击效果。

全码

package com.example.wang3.myapplication;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.example.wang3.myapplication.adapter.FragmentAdapter;
import com.example.wang3.myapplication.fragment.ContextFragment;
import com.example.wang3.myapplication.fragment.FriendFragment;
import com.example.wang3.myapplication.fragment.MeFragment;

import java.util.ArrayList;

public class WEActivity extends AppCompatActivity implements View.OnClickListener {
    private Button button;
    private Button button2;
    private Button button3;
    private TextView textView1;
    private ViewPager viewPager;
    private ArrayList<Fragment> fragmentArrayList = new ArrayList<>();
    private ContextFragment contextFragment;
    private FriendFragment friendFragment;
    private MeFragment meFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_we);
        BlindID();
        contextFragment = new ContextFragment();
        friendFragment = new FriendFragment();
        meFragment = new MeFragment();
        fragmentArrayList.add(contextFragment);
        fragmentArrayList.add(friendFragment);
        fragmentArrayList.add(meFragment);
        FragmentAdapter fragmentAdapter = new FragmentAdapter(getSupportFragmentManager(), fragmentArrayList);
        viewPager.setAdapter(fragmentAdapter);
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                switch (position) {
                    case 0:
                        button.setTextColor(getResources().getColor(R.color.colorAccent));
                        button2.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                        button3.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                        break;
                    case 1:
                        button.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                        button3.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                        button2.setTextColor(getResources().getColor(R.color.colorAccent));
                        break;
                    case 2:
                        button.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                        button2.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                        button3.setTextColor(getResources().getColor(R.color.colorAccent));
                        break;
                }

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    private void BlindID() {
        button = findViewById(R.id.bt1);
        button2 = findViewById(R.id.bt2);
        button3 = findViewById(R.id.bt3);
        viewPager = findViewById(R.id.viewpager);
        textView1=findViewById(R.id.text1);
        button.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);

    }

    public void name(String name){
        textView1.setText(name);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.bt1:
                viewPager.setCurrentItem(0);
                break;
            case R.id.bt2:
                viewPager.setCurrentItem(1);
                break;
            case R.id.bt3:
                viewPager.setCurrentItem(2);
                break;
        }

    }

}
如何实现MCGS与S7-200SMART PLC以太网多台通信控制? 第九步:(设备工具箱—设备管理—鼠标依次点击通用TCP/IP父设备—西门子_ Smart200到设备窗口里面去)数据类型:第0位(指PLC地址变量小数点后面的位数,例如我地址是M0.0,那么在数据类型应填写通道的第00位)第十步:(鼠标双击打开通用TCPIP父设备0--[通用TCP/IP父设备]进入通信配置)通道地址:0(指小数点前面起始字节的地址,例如我地址是M0.0,那么应在通道地填写0)。第七步:(选择通用TCP/IP父设备,点击新增,右侧选定设备就会自动添加进去。 阅读详情

相关推荐

如何查看在电脑里登陆过的微信帐号的聊天记录

打开微信电脑版,点击左下角 "≡" 菜单 → 选择 "设置"进入 "账号与存储"(旧版为" 文件管理 ")选项卡在 "存储位置"一栏查看当前实际保存路径,可点击" 打开文件夹 " 直接访问查看电脑里登录过的微信账号聊天记录,首选官方客户端直接登录查看,操作简单且安全;若账号已退出,可通过备份恢复功能处理;仅需查看媒体文件时,可定位到FileStorage 文件夹直接访问。无论哪种方式,都需遵守隐私保护原则,并注意聊天记录的加密特性限制。

捷利迅分享的博客 4553

Fragment全文详解(由浅入深_源码分析)

相信android开发者们一定或多或少的用过Fragment,但是对于其更深层次的原理我猜可能大部分应该都没有了解过,今天这里就由浅入深,整体对Fragment做一个全面解析。

Pumpkin's Blog 3681

小白 虚拟机 kali_Linux安装 详细教程

安装版本:VMmare workstation pro kali_Linux 安装环境:Window10 首先我们先了解一下什么是kali_linux: Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行

m0_50917178的博客 9万+

fragment切换 hide和show之后重新刷新数据的方法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

God、古月 1万+

爆破shadow文件密码脚本(完成版)

由于添加了一个for循环,再稍作修改,让password not found!print(f"Trying password:")显示爆破的密码和过程。将代码中的password="123456"替换成下面代码。line.strip()函数首尾去空格。

m0_56578216的博客 772

LoRa双端通信稳定性核心:同步字配置与LLCC68工程实践

LoRa是一种基于扩频调制的远距离低功耗无线通信技术,其物理层鲁棒性依赖于发射端与接收端在频率、带宽、扩频因子及同步字等关键参数上的严格一致。同步字作为LoRa帧结构中位于前导码之后的2字节标识字段,承担着物理层帧过滤与网络隔离的核心作用,直接影响通信成功率与抗干扰能力。在实际嵌入式开发中,尤其采用LLCC68等专用射频芯片时,同步字配置错误或双端不一致是导致‘能发不能收’‘间歇性丢包’等典型问题的首要原因。本文面向STM32等Cortex-M平台开发者,结合硬件一致性约束、驱动移植方法论与寄存器级调试手段

weixin_36019375的博客 130

CriminalIntent程序中Fragment相关内容

Activity中托管UI fragment的两种方法

ivyxjc的博客 549

开发simulink 以及stm32半物理仿真碰到的问题,以及处理方法,Error:External Mode Open Protocol Connect command failed(实测有用)

串口实现的,但是在测试的时候发现,这个串口可以正常发送和接收数据,但是一旦把这个串口只让其进行版物理仿真就报错。直接刷写程序是可以的,最后查到问题了。我要实现半物理仿真,就是通过matlab实现可以直接控制stm32板子,实际上是通过xcp on。然后点击simulink上的观测按钮就可以直接和stm32平台进行通讯了。3,还是使用串口3,但是重新需要设置一下com口,因为重新插拔了一下,按照这个设置方法就可以。2,重新加载ioc文件。

pvmsmfchcs的博客 1500

React渲染相关内容——渲染流程API、Fragment、渲染相关底层API

类组件和函数组件在React渲染流程中遇到的函数和方法有所不同。类组件依赖于生命周期方法来执行副作用操作、更新state和进行清理工作。函数组件则使用Hooks来提供类似的功能,同时保持组件的简洁性和可重用性。

警警的博客 1316

Sigrity Power DC Package Multi-Resistor Compact ET Model Extraction模式提取封装基板电热阻模型

DIE(定义DIE的参数):material设置为silicon(硅),Attach material(贴片的材料,设置为Die Attach),Attach thickness(贴片的材料的厚度,厚度设置为0.001mm,点击ok。Cap为覆盖材料,Material定义材料类型,thickness定义厚度,length和width定义长宽,Adhesive Material为胶的材料,Adhesive Material为胶的厚度,本例不定义,跳过即可。

weixin_54787054的博客 440

YOLOv8的二次创新 | 结合iRMB与EMA打造全新的iEMA机制,提升动态检测性能【附保姆级代码】

YOLOv8继承了YOLO系列的轻量化和高效检测特性,同时通过改进的架构设计使得其在实时场景下具有更高的检测精度。然而,随着检测需求的增加,尤其是在动态目标检测和长时间序列检测中,YOLOv8的鲁棒性依然可以提升。通过iEMA机制的引入,我们将在这些方面进行进一步优化。iRMB模块是我们对传统Residual Block的进一步改进。通过多层特征提取,iRMB能够捕捉更多层次的特征信息,并通过引入轻量化的残差结构,提升计算效率。

一键难忘的博客 3085

Android:Activity和Fragment交互、Fragment控件UI升级相关内容

在Activity中其实已经实例化了一个Fragment对象,使用replace等于就是把这个对象给传到一个view container中罢了。 这是可以用给这个Fragment对象setArgument(),然后在Fragment类的java代码中getArgument()的方法实现参数的传递。 如果要在Fragment类的java代码中动态的更新UI,不能再onCreate()中写

hz0324的专栏 1486

cesium单向流动线效果

在学材质的路上一去不复返了属实是,难也难在这。还请各位大佬多多指教~

就zhei? 689

Fragment相关内容(转发)

https://www.jianshu.com/p/9f538c3a1918

chovey271的博客 135

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android开发—碎片(Fragment)的定义和动态添加相关内容(十六)

android开发 笔记(2.12)1.碎片的简单使用方法2.动态添加碎片 1.碎片的简单使用方法 简单实例: (1)left_fragment.xml: (2)right_fragment.xml (3)LeftFragment.java (4)RightFragment.java (5)activity_main.xml 使用fragment标签用来添加碎片,其实android:nam...

Doyle_的博客 768

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Fragment 相关说明

相关说得比较详细的文章 Fragment进阶-FragmentTransaction详解 - 简书

ADS李的博客 183

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Android面试特辑】Fragment总结回顾

总结一下Fragment的内容,欢迎补充。

擦肩的阳光的专栏 291

2.12学习内容 go的map、闭包,andoid的Fragment相关

package main import "fmt" type Vertex struct { Lat, Long float64 } var m map[string]Vertex func main() { m = make(map[string]Vertex) m["Bell Labs"] = Vertex{ 40.68433, -74.39967, } fmt.Prin

touch_ping的专栏 711

4 Fragment

u010919133的专栏 316

Fragment 获取Activity 值或者方法

直接放图:

每日一步 1334

Android开发---片段Fragment相关内容(片段管理、执行片段事务、事件传递、生命周期)概述

Fragment概览参考资料概述创建片段 参考资料 Android开发者指南–Fragment 概述 Fragment 表示 FragmentActivity 中的行为或界面的一部分。您可以在一个 Activity 中组合多个片段,从而构建多窗格界面,并在多个 Activity 中重复使用某个片段。您可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且您可以在 Activity 运行时添加或移除片段(这有点像可以在不同 Activity 中重复

lishen1990的博客 330

Fragment

未完待续。。。

weimeig的博客 131

MVP与Fragment的缺点

http://www.devtf.cn/?p=598

RuiMan的博客 1746

Android动态添加Fragment

Android动态添加Fragment 效果图如下: 项目结构图如下: Fragment1: package com.demo.dongtaifragment; import android.app.Fragment; import android.os.Bundle; import android.support.annotation.NonNull; import andr...

AndroidStudyDay的博客 2637

fragment问题,不知道怎么解决

hong15007046964的专栏 415

第5天Fragment高级进阶

Fragment高级进阶Fragment 传值介绍activity 给 fragment传值fragment 给 activity传值Activity中的代码Activity中的xml文件fragment中的代码fragment的xml文件fragment 给 fragment 传值handler传值接口回调传值fragment 多层嵌套案例(微信底部按钮与fragment实现界面切换) Frag...

shuai_ge_feng的博客 2066
上一篇: 屏幕适配相关整理
下一篇: Handler的作用与用法
nmwwbreed
博客等级 码龄9年 17粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值