Activity与在Android的碎片Fragment

Android的API 3.0版本,被称为蜂窝,引入了新的概念,叫做“记忆碎片”。什么是片断,为什么你想使用一个?请继续阅读。在Android中,配置的变化(包括将手机侧向转动,以查看屏幕在横向)导致当前正在运行的活动停止,重载,并使用新的配置参数重新呈现。(我敢肯定,iOS开发者将指出这个“功能”中缺少自己的堆栈)。在这样做时,您的应用程序将失去所有的状态信息从最初的活动实例。那岂不是更好,让解决?输入片段。片段是,有能力之间保持状态的配置更改的UI组件(虽然它可能有非UI片段)。片段必须始终与活动相关联,但一个简短的电话setRetainInstance(真),与活动相关联的片段重新连接到新的实例的活动,并保留其原来的状态。  为了证明片段呆在身边,我们将创建两个独立的片段,每一个选择时,构建一个随机ID。然后,我们将两个片段连接到一个活动。第一个片段最初看到的第二个片段会被隐藏。当你点击一个按钮上的第一个片段,它会显示你的第二,反之亦然。然后,您可以检查,以确保原片段真的是住周围的ID,这是一个有用的技术,可以使用较小的设备上显示UI在一块。在大型设备,你可以定义一个布局一次显示两个片段的。片段允许你构建你
​​的UI一系列较小的,可重复使用的图形元素,你安排需要根据设备的能力,让我们的开始通过创建一个FirstFragment类及SecondFragment类。我假设读者熟悉与处理onClick事件,所以不会打扰他解释说。因此,它是你正在寻找在哪个片段,每个片段都会有一个id。
 

public class FirstFragment extends Fragment {

        public static final String TAG = "FirstFragmentTag";
        int key;

        public FirstFragment() {
                this.setRetainInstance(true);
                Random random = new Random();
                key = random.nextInt();
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                Log.i(TAG, "onCreateView");
                View view = inflater.inflate(R.layout.first_fragment_layout, container, false);
                TextView textView = (TextView) view.findViewById(R.id.firstFragmentTextView);
                textView.setText(textView.getText() + "" + key);
                Button button = (Button) view.findViewById(R.id.goToSecondFragmentButton);
                button.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                                SecondFragment secondFragment = (SecondFragment) FirstFragment.this.getActivity()
                                                .getSupportFragmentManager().findFragmentById(R.id.secondFragment);
                                secondFragment.getView().setVisibility(View.VISIBLE);
                                FirstFragment.this.getView().setVisibility(View.GONE);
                        }
                });
                return view;
        }
}

ublic class SecondFragment extends Fragment {
        protected static final String TAG = "SecondFragmentTag";
        int key;

        public SecondFragment() {
                this.setRetainInstance(true);
                Random random = new Random();
                key = random.nextInt();
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                Log.i(TAG, "onCreateView");
                View view = inflater.inflate(R.layout.second_fragment_layout, container, false);
                TextView textView = (TextView) view.findViewById(R.id.secondFragmentTextView);
                textView.setText(textView.getText() + "" + key);
                Button button = (Button) view.findViewById(R.id.goToFirstFragmentButton);
                button.setOnClickListener(new View.OnClickListener() {

                        public void onClick(View v) {
                                FirstFragment firstFragment = (FirstFragment) SecondFragment.this.getActivity()
                                                .getSupportFragmentManager().findFragmentById(R.id.firstFragment);
                                firstFragment.getView().setVisibility(View.VISIBLE);
                                SecondFragment.this.getView().setVisibility(View.GONE);
                        }

                });
                return view;
        }

每个片段的布局将包括一个TextView(显示的ID),一个ImageView(显示不同的图形),和一个按钮(导航到另一个片段)。主要活动布局将包括的LinearLayout,包含的FirstFragment和SecondFragment的。FirstFragment将其可见性设置为“可见”,SecondFragment将有它的可见性设置为“水涨船高”。在这里签出文件  。

FirstFragment布局SecondFragment布局定义每个片段将如何看。
 

为了证明这些碎片保持其状态,运行的程序,然后把你的手机,把它变成横向模式。检查看看的ID保持不变,为每一个片段后,切换到横向。他们应该的。然后取出setRetainInstance()调用,然后重新运行该程序。你会发现,IDS改变每次你改变手机的方向。

片段是目前被认为是最好的做法在Android UI设计,很容易明白为什么,因为他们提供了很大的灵活性。

时间: 2024-08-02 09:03:58

Activity与在Android的碎片Fragment的相关文章

Android学习之Fragment

Fragment 是什么 碎片(Fragment)是一种可以嵌入在活动(activity)当中的 UI 片段. 一.碎片的简单用法 创建两个布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

[正文] 一.接口回调的简单引入: 我们先来看一个简单的接口回调的例子: 新建一个Java工程,然后新建一个包.然后新建一个A.java文件: A.java代码如下: 1 package com.cn.callback; 2 3 public class A { 4 public A() { 5 6 } 7 8 //下载图片的操作 9 public void loadImage(String image_path,final CallBack callBack) { 10 new Thread(

Android系列之Fragment(一)----Fragment加载到Activity当中

[正文] Android上的界面展示都是通过Activity实现的,Activity实在是太常用了.但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常大,手机的界面放在平板上可能会有过分被拉长.控件间距过大等情况.这个时候更好的体验效果是在Activity中嵌入"小Activity",然后每个"小Activity"又可以拥有自己的布局.因此,我们今天的主角Fragment登场了. 一.Fragment初探: F

android fragment-怎样在一个activity里面同时显示两个fragment?

问题描述 怎样在一个activity里面同时显示两个fragment? 我在linerlayout里面添加两个fragment标签,但是会报错?请问有没有实现过的?还是不能实现,原理是什么?谢谢! 解决方案 简单来说,你把碎片也当成控件来使用,就像你在布局控件再加入两个viewgroup,然后再把碎片当成两个活动进行加载,最后引入,注意排版. 报错的话我猜可能有以下情况. 布局错误,可能线性布局方向错了,碎片没法排版. 碎片没有定义,不管怎么引入碎片,都必须新建一个类继承碎片父类. 通信错误,碎

android 开发activity如何向多个不同fragment 进行通信

问题描述 android 开发activity如何向多个不同fragment 进行通信 最近开发android ,需要一个activity 向不同的fragment 发送消息,知道的告诉小弟一声. 解决方案 setArguments方法 解决方案二: 可以用刘上的setArguments来设置,也可以用APP这个全局变量的类来专递数据,写一个APP类的单例模式,然后获取的值存到这里,在fragment里面调用就可以了 解决方案三: fragment是需要依赖activity的,fragments

Android基础之Fragment与Activity交互详解

以下小编就为大家介绍一下Fragment跟Activity之间的关系.需要的朋友可以过来参考下   今天继续讲解Fragment组件的特性,主要是跟Activity的交互和生命周期的关系,我们前面已经说过Fragment是依赖于Activity的,而且生命周期也跟Activity绑定一起.下面我们看看Fragment跟Activity的关系. 1.为Activity创建事件回调方法在 一些情况下, 你可能需要一个fragment与activity分享事件. 一个好的方法是在fragment中定义

Android的ToDoList(fragment) 详解

Fragment(碎片) 可以灵活地从一个活动的Activity上添加或删除Fragment, 有良好的用户体验; 下面是Fragment的具体设计: 1. 创建new_item_fragment的资源文件: 位置: res->new_item_fragment.xml <?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.and

Android开发: fragment解析及案例

  Fragment 设计理念 在设计应用时特别是Android 应用 ,有众多的分辨率要去适应,而fragments 可以让你在屏幕不同的屏幕上动态管理UI.例如:通讯应用程序(QQ),用户列表可以在左边,消息窗口在右边的设计.而在手机屏幕用户列表填充屏幕当点击某一用户时,则弹出对话窗口的设计,如下图: 开发: fragment解析及案例-fragment源码解析"> Fragment的生命周期  每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件. 对应生

详解Android开发中Fragment的使用_java

前言学习Java和Android将近一年的时间了,期间的成果应该就是独立完成了一个Android客户端,并且保证了其在主线版本的稳定性.期间遇到了很多坑,也跟着师兄学到了很多Android知识.但是人总是要拥抱变化,不能让自己太安逸,虽然有不舍,但是我已经证明了自己的学习能力,下一步就是开始做Rom Porting了.这里总结一下之前项目中用到最多的Fragment. Fragment简介Fragment可以理解成Activity中用户界面的一个行为或者一部分,它必须被嵌套在Activity中.