Android学习记录(十二)

Android学习记录(十二),第1张

概述文章目录Fragment相关知识1.基本概念1.1基本介绍1.2子类2.创建Fragment2.1静态创建2.2动态创建3.Fragment管理与Fragment事务4.Fragment与Activity的交互5.案例演示5.1新建项目【SwitchFragment】5.2加入背景图片5.3activity_main.xml5.4创建第一个碎片5.5修改

文章目录Fragment相关知识1.基本概念1.1 基本介绍1.2 子类2.创建Fragment2.1 静态创建2.2 动态创建3.Fragment管理与Fragment事务4.Fragment与Activity的交互5.案例演示5.1 新建项目【SwitchFragment】5.2 加入背景图片5.3 activity_main.xml5.4 创建第一个碎片5.5 修改第一个碎片布局文件5.6 创建第二个碎片5.7 修改第二个碎片的布局文件5.8 创建第三个碎片5.9 修改第三个碎片的布局文件5.10 修改字符串文件5.11 修改主界面文件5.12 修改第一个碎片界面类5.13 修改第二个碎片界面类5.14 修改第三个碎片界面类5.15 运行效果6.代码优化6.1 创建碎片列表类6.2 修改主界面类6.3 修改第一个碎片类6.4 修改第二个碎片类6.5 修改第三个碎片类6.6 运行程序,查看结果

Fragment相关知识1.基本概念1.1 基本介绍

Fragment是AndroID3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑, 当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会加入这个Fragment, 我们可以把他看成一个小型的Activity,又称Activity片段!想想,如果一个很大的界面,我们 就一个布局,写起界面来会有多麻烦,而且如果组件多的话是管理起来也很麻烦!而使用Fragment 我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理!从而可以更加方便的在 运行过程中动态地更新Activity的用户界面!另外Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity 被destory销毁了,他也会跟着销毁!

1.2 子类

对话框:DialogFragment
列表:ListFragment
选项设置:PreferenceFragment
WebVIEw界面:WebVIEwFragment

2.创建Fragment2.1 静态创建

2.2 动态创建

3.Fragment管理与Fragment事务

4.Fragment与Activity的交互

5.案例演示5.1 新建项目【SwitchFragment】


5.2 加入背景图片


5.3 activity_main.xml

<?xml version="1.0" enCoding="utf-8"?><FrameLayout 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:ID="@+ID/container"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    tools:context=".MainActivity"></FrameLayout>
5.4 创建第一个碎片


5.5 修改第一个碎片布局文件

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="@drawable/picture01"    androID:gravity="center"    androID:orIEntation="vertical"    tools:context=".FirstFragment">    <TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_marginBottom="20dp"        androID:text="@string/first_fragment"        androID:textcolor="#ff0000"        androID:textSize="25sp"/>    <button        androID:ID="@+ID/btnNextFragment"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="doNextFragment"        androID:text="@string/next_fragment"/></linearLayout>
5.6 创建第二个碎片

5.7 修改第二个碎片的布局文件

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="@drawable/picture02"    androID:gravity="center"    androID:orIEntation="vertical"    tools:context=".FirstFragment">    <TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_marginBottom="20dp"        androID:text="@string/second_fragment"        androID:textcolor="#00ff00"        androID:textSize="25sp" />    <button        androID:ID="@+ID/btnNextFragment"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="doNextFragment"        androID:text="@string/next_fragment"/></linearLayout>
5.8 创建第三个碎片

5.9 修改第三个碎片的布局文件

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="@drawable/picture03"    androID:gravity="center"    androID:orIEntation="vertical"    tools:context=".FirstFragment">    <TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_marginBottom="20dp"        androID:text="@string/third_fragment"        androID:textcolor="#0000ff"        androID:textSize="25sp" />    <button        androID:ID="@+ID/btnNextFragment"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="doNextFragment"        androID:text="@string/next_fragment"/></linearLayout>
5.10 修改字符串文件

<resources>    <string name="app_name">切换碎片</string>    <string name="first_fragment">第一个碎片</string>    <string name="second_fragment">第二个碎片</string>    <string name="third_fragment">第三个碎片</string>    <string name="next_fragment">下一个碎片</string></resources>
5.11 修改主界面文件

package net.nell.switchfragment;import androID.os.Bundle;import androIDx.appcompat.app.AppCompatActivity;import androIDx.fragment.app.FragmentManager;public class MainActivity extends AppCompatActivity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        // 获取碎片管理器        FragmentManager fm = getSupportFragmentManager();        // 在主容器里添加第一个碎片        fm.beginTransaction().add(R.ID.container, new FirstFragment()).commit();    }}
5.12 修改第一个碎片界面类

package net.nell.switchfragment;import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androIDx.fragment.app.Fragment;public class FirstFragment extends Fragment {    private button btnNextFragment;    public FirstFragment() {    }    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                             Bundle savedInstanceState) {        // 获取碎片视图        VIEw vIEw = inflater.inflate(R.layout.fragment_first, container, false);        // 通过资源标识获得控件实例        btnNextFragment = vIEw.findVIEwByID(R.ID.btnNextFragment);        // 给按钮注册监听器        btnNextFragment.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                getFragmentManager().beginTransaction()                        .addToBackStack("next")                        .replace(R.ID.container, new SecondFragment())                        .commit();            }        });        // 返回视图        return vIEw;    }}
5.13 修改第二个碎片界面类

package net.nell.switchfragment;import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androIDx.fragment.app.Fragment;public class SecondFragment extends Fragment {    private button btnNextFragment;    public SecondFragment() {    }    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                             Bundle savedInstanceState) {        // 获取碎片视图        VIEw vIEw = inflater.inflate(R.layout.fragment_second, container, false);        // 通过资源标识获得控件实例        btnNextFragment = vIEw.findVIEwByID(R.ID.btnNextFragment);        // 给按钮注册监听器        btnNextFragment.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                getFragmentManager().beginTransaction()                        .addToBackStack("next")                        .replace(R.ID.container, new ThirdFragment())                        .commit();            }        });        // 返回视图        return vIEw;    }}
5.14 修改第三个碎片界面类

package net.nell.switchfragment;import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androIDx.fragment.app.Fragment;public class ThirdFragment extends Fragment {    private button btnNextFragment;    public ThirdFragment() {    }    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                             Bundle savedInstanceState) {        // 获取碎片视图        VIEw vIEw = inflater.inflate(R.layout.fragment_third, container, false);        // 通过资源标识获得控件实例        btnNextFragment = vIEw.findVIEwByID(R.ID.btnNextFragment);        // 给按钮注册监听器        btnNextFragment.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                getFragmentManager().beginTransaction()                        .addToBackStack("next")                        .replace(R.ID.container, new FirstFragment())                        .commit();            }        });        // 返回视图        return vIEw;    }}
5.15 运行效果



6.代码优化6.1 创建碎片列表类

package net.nell.switchfragment;import androIDx.fragment.app.Fragment;import java.util.ArrayList;import java.util.List;public class FragmentList {    public static List<Fragment> fragments = new ArrayList<>();}
6.2 修改主界面类

package net.nell.switchfragment;import androID.os.Bundle;import androIDx.appcompat.app.AppCompatActivity;import androIDx.fragment.app.FragmentManager;public class MainActivity extends AppCompatActivity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 利用布局资源文件设置用户界面        setContentVIEw(R.layout.activity_main);        // 获取碎片管理器        FragmentManager fm = getSupportFragmentManager();        // 创建三个碎片,添加到碎片列表        FragmentList.fragments.add(new FirstFragment());        FragmentList.fragments.add(new SecondFragment());        FragmentList.fragments.add(new ThirdFragment());        // 在主容器里添加第一个碎片        fm.beginTransaction().add(R.ID.container, FragmentList.fragments.get(0)).commit();    }}
6.3 修改第一个碎片类

6.4 修改第二个碎片类

6.5 修改第三个碎片类

6.6 运行程序,查看结果



总结

以上是内存溢出为你收集整理的Android学习记录(十二)全部内容,希望文章能够帮你解决Android学习记录(十二)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1049434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存