Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >碎片的动态添加

碎片的动态添加

作者头像
Dream城堡
发布于 2018-12-14 07:15:32
发布于 2018-12-14 07:15:32
2.2K00
代码可运行
举报
文章被收录于专栏:Spring相关Spring相关
运行总次数:0
代码可运行

碎片的动态添加

1.添加another_right_fragment.xml:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffff00"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="20sp"
        android:text="this is another right fragment"
        />

</LinearLayout>
2.新建AnotherRightFragment类
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.fragmenttest;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class AnotherRightFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.another_right_fragment,
                container, false
        );
        return view;
    }
}
3.修改activity_main.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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="horizontal">

    <fragment
        android:id="@+id/left_fragment"
        android:name="com.example.fragmenttest.LeftFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"></fragment>
  
    <FrameLayout
        android:id="@+id/right_layout"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1">
    </FrameLayout>

</LinearLayout>
4.修改MainActivity
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.fragmenttest;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
        //动态添加RightFragment这个碎片到当前界面
        replaceFragment(new RightFragment());

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button:
                //点击按钮替换为另一个碎片
                replaceFragment(new AnotherRightFragment());
                break;
            default:
                break;
        }
    }

    private void replaceFragment(Fragment fragment) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.right_layout, fragment);
        //添加返回栈,点击back会返回上一个界面而不是退出
        transaction.addToBackStack(null);
        transaction.commit();


    }
}
效果如下:

dfff.gif

碎片和活动之间进行通信

获取碎片实例的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        LeftFragment leftFragment = (LeftFragment) getFragmentManager().findFragmentById(R.id.left_fragment);

获取活动的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   MainActivity activity = (MainActivity)getActivity();

碎片的生命周期

  1. onAttach()

当碎片和活动建立关联的时候调用。

  1. onCreateView()

为碎片创建视图(加载布局)时调用。

  1. onActivityCreated()

确保与碎片相关联的活动一定已经创建完毕的时候调用。

  1. onDestroyView()

当与碎片关联的视图被移除的时候调用。

  1. onDetach()

当碎片和活动解除关联的时候调用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.fragmenttest;

import android.content.Context;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class RightFragment extends Fragment {

    private static final String TAG = "RightFragment";

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.d(TAG, "onAttach: 当碎片和活动建立关联");
    }

    @Override
    public void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");
    }

    @Override
    public View onCreateView(LayoutInflater inflater,  ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.right_fragment,
                container, false
        );

        return view;
    }


    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.d(TAG, "onActivityCreated: 活动建立");
    }


    @Override
    public void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: 开始");
    }


    @Override
    public void onResume() {
        super.onResume();
        Log.d(TAG, "onResume: 继续");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.d(TAG, "onPause: 暂停");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.d(TAG, "onStop: 停止");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.d(TAG, "onDestroyView: ");
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: 销毁");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.d(TAG, "onDetach: ");
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.11.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android开发之漫漫长途 XII——Fragment详解
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!
LoveWFan
2018/08/07
4190
Android开发之漫漫长途 XII——Fragment详解
Android Fragment完全解析,关于碎片你所需知道的一切
用户1158055
2018/01/05
1.2K0
Android Fragment完全解析,关于碎片你所需知道的一切
碎片的简单用法
碎片的简单用法 1.新建一个FragmentTest项目 2.新建left_fragment.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLa
Dream城堡
2018/12/14
4240
碎片的简单用法
Fragment生命周期及实现点击导航图片切换fragment,Demo
PS:Fragment简介     Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑, 当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会加入这个Fragment, 我们可以把他看成一个小型的Activity,又称Activity片段!想想,如果一个很大的界面,我们 就一个布局,写起界面来会有多麻烦,而且如果组件多的话是管理起来也很麻烦!而使用Fragment 我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理!从而可以更加方便
cMusketeer
2018/03/28
1.1K0
Fragment生命周期及实现点击导航图片切换fragment,Demo
Fragment最全面使用详解
Fragment在Android开发中非常常用,今天就来介绍下Fragment及其使用方法
Carson.Ho
2019/02/22
2.2K0
探究Fragment生命周期
一个Activity可以同时组合多个Fragment,一个Fragment也可被多个Activity 复用。Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。 一、Fragment状态 与Activity类似的是,Fragment也存在如下4种状态: 运行状态:当前Fmgment位于前台,用户可见,可以获得焦点。 暂停状态:其他Activity位于前台,该Fragment依然可见,只是不能获得焦点。 停止状态:该Frag
分享达人秀
2018/03/26
2.1K0
探究Fragment生命周期
Carson带你学Android:这是一份详细 & 全面的Fragment学习攻略
Fragment在 Android开发中非常常用。今天,我将讲解关于Fragment的使用
Carson.Ho
2022/03/24
3890
Carson带你学Android:这是一份详细 & 全面的Fragment学习攻略
Android应用界面开发——Fragment(实现图书详情界面)
Fragment代表了Activity的子模块,因此可以把Fragment理解成Activity片段。
trampcr
2018/09/28
2.7K0
Android应用界面开发——Fragment(实现图书详情界面)
安卓开发_深入理解Activity和Fragment的关系
Fragment(碎片)是必须嵌入在 Activity(活动) 中使用的。Fragment的生命周期随着Activity的生命周期的变化而变化 一、首先让我们看下Activity和Fragment的生
听着music睡
2018/05/18
1.9K0
久闻大名的FragmentAndroid应用界面开发
Fragment(碎片),听名字就知道是一种零部件,确实,这是一种寄生于Activity(活动)之中的灵活型Activity,当然,只是种比喻。
爱因斯坦福
2018/09/10
7610
Android开发之漫漫长途 XIII——Fragment最佳实践
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!
LoveWFan
2018/08/07
1.3K0
Android开发之漫漫长途 XIII——Fragment最佳实践
3-AVI--Activity与Fragment的数据传递
零、前言 [1].Activity向Fragment传数据 [2].Fragment向Activity传数据 [3].Fragment向Fragment传数据 一、Activity向Frag
张风捷特烈
2018/09/26
7870
Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式
ViewPager的声明:<android.support.v4.view.ViewPager> 是为了解决版本兼容性问题
达达前端
2019/07/03
1.6K0
札记:Fragment基础
Fragment概述 在Fragment出现之前,Activity是app中界面的基本组成单位,值得一提的是,作为四大组件之一,它是需要“注册”的。组件的特性使得一个Activity可以在整个app甚
用户1172465
2018/01/08
1.3K0
札记:Fragment基础
Fragment详解
##简介 A Fragment is a piece of an application’s user interface or behavior that can be placed in an Activity. Interaction with fragments is done through FragmentManager, which can be obtained via Activity.getFragmentManager() and Fragment.getFragmentManager
xiangzhihong
2018/01/26
1.2K0
从0系统学Android--4.1探究碎片
平板电脑和手机最大的区别就在于屏幕的大小,一般手机的屏幕大小会在 3 英寸到 6 英寸之间,而一般平板电脑屏幕大小会在 7 英寸到 10 英寸之间。屏幕大小差距过大会导致同样的界面视觉效果有很大的差异。
开发者
2019/12/26
6750
从0系统学Android--4.1探究碎片
【Android 应用开发】 Fragment 详解
转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191
韩曙亮
2023/03/27
1.6K0
【Android 应用开发】 Fragment 详解
Android动态添加Fragment
Android动态添加Fragment 效果图如下: image 项目结构图如下: image Fragment1: package com.demo.dongtaifragment; import
Dream城堡
2019/03/04
2.7K0
安卓-碎片的使用入门
碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用得非常广泛。虽然碎片对你来说应该是个全新的概念,但我相信你学习起来应该毫不费力,因为它和活动实在是太像了,同样都能包含布局,同样都有自己的生命周期。你甚至可以将碎片理解成一个迷你型的活动,虽然这个迷你型的活动有可能和普通的活动是一样大的。
Fisherman渔夫
2020/02/19
1.4K0
Fragment初识
Android 在 Android 3.0(API 11 级)中引入了Fragment,主要是为了给大屏幕(如平板电脑)上更加动态和灵活的 UI 设计提供支持。由于平板电脑的屏幕比手机屏幕大得多,因此可用于组合和交换 UI 组件的空间更大。利用片段实现此类设计时,您无需管理对视图层次结构的复杂更改。 通过将 Activity 布局分成片段,您可以在运行时修改 Activity 的外观,并在由 Activity 管理的返回栈中保留这些更改。
小小工匠
2021/08/16
1.3K0
相关推荐
Android开发之漫漫长途 XII——Fragment详解
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验