Android fragment onHiddenChanged方法详解

项目中,为了实现不同fragment之间值得传递,首先想到的是利用bundle或者shareprefercnce之类的共享数据机制,当不符合项目需求,有点过于复杂和冗余,就利用网上一位前辈的建议,在主Activity中,创建一个共享的数据变量,在其他fragment中只要获取到这个值就可以得到数据,实现共享,代码如下:

主activity定义一个共享数据变量:
   private String instrName;

	public String getInstrName() {
		return instrName;
	}

	public void setInstrName(String instrName) {
		this.instrName = instrName;
	}

在其他fragment中使用如下语句即可得到该数据:

String instrName = ((MainActivity)getActivity()).getInstrName();

但重点不在于获取数据,我遇到的困难是这样的,先前的博文有提到我使用了popupwindow作为左侧下拉菜单,为了实现主界面不同fragment的切换,做了一个隐藏和显示的处理,只要已经实例化的fragment类,要用的时候,直接show显示即可,不用的时候hide隐藏起来。又不懂或者不知道如何使用的可以参考我这篇博文:点击打开链接。这样实现之后,我要再fragment
a中的列表点击其中一个列表项,跳转到另一个fragment b中,当然这个列表项的值需要传递到fragment b中,很多人会认为不是直接可以使用你上面的方法可以得到共享的数据吗?

其实难点在于,第一次切换到fragment b中,已经实例化的时候,确实能得到共享的数据,当第二次切换到fragment b,点击的是其他的列表项,这时候我发现,这个fragment b已经被我隐藏了,并且是这样的:(已经初始化的fragment就不再初始化,只需要hide隐藏),但是隐藏了之后,这段获取数据的代码

String instrName = ((MainActivity)getActivity()).getInstrName();
应该放到哪里会执行呢?
我的要求是从fragment a一切换到fragment b中就要马上获取到共享的数据,并展现在fragment b的列表中?
解决方案其实是有的,以前activity在恢复显示的时候有一个方法就是监听显示是否完成,同样对于fragment也有类似的方法可以监听,如下:
@Override
    public void onHiddenChanged(boolean hidd) {
        if (hidd) {
String instrName = ((MainActivity)getActivity()).getInstrName();
System.out.println("当对冲界面重新恢复显示时候,得到从开仓单获取到的商品名称"+instrName+"***************++++++++++++*****");
System.out.println("当对冲界面重新恢复显示时候,得到从开仓单获取到的商品名称"+instrName+"***************++++++++++++*****");

        } else {
            //相当于Fragment的onPause
           String instrName = ((MainActivity)getActivity()).getInstrName();
          System.out.println("当对冲界面重新恢复显示时候,得到从开仓单获取到的商品名称"+instrName+"***************++++++++++++*****");

        }
    }

这样在fragment隐藏或者显示的时候,都能够获取到共享的数据。注意点是第一次是需要new一个frament对象,这时候也要得到共享数据,只需要将代码写到oonCreateView中即可。


版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 17:51:06

Android fragment onHiddenChanged方法详解的相关文章

Android工程:引用另一个Android工程的方法详解

本篇文章是对在Android中引用另一个Android工程的方法进行了详细的分析介绍.需要的朋友参考下 现在已经有了一个Android工程A.我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个Android工程B,想在B中引用A. 一个思路是把工程A做成纯Jar包,这样其他的工程就可以直接引用了. 但是,如果在工程A中用了R.java中的引用,则无法打成jar包了.原因是R.java是自动生成的,是动态的,每次编译都是不相同的.如果一定要做成jar包,就不能使用自动生成的R文件,

Android fragment onHiddenChanged方法具体解释

项目中.为了实现不同fragment之间值得传递,首先想到的是利用bundle或者shareprefercnce之类的共享数据机制,当不符合项目需求,有点过于复杂和冗余,就利用网上一位前辈的建议.在主Activity中,创建一个共享的数据变量,在其它fragment中仅仅要获取到这个值就能够得到数据,实现共享.代码例如以下: 主activity定义一个共享数据变量: private String instrName; public String getInstrName() { return i

android中Drawable方法详解

1. BitmapDrawable相关方法: 新建在drawable目录下面,示例如下: <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:antialias="true" android:dither="true" android:filter="true" android:gravity="center&qu

Android网络访问方法详解

大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作, HttpURLConnection和HttpClient.这两种方式都支持HTTPS协议.以流的形式进行上传和下载.配置超时时间.IPv6.以及连接池等功能. 一 : 首先来看一下Android下提供的网络访问相关API a) java.net.*(标准的Java接口):包括流和数据包(datagram)sockets.Internet 协议和常见 HTTP 处理.H

Android layoutInflate.inflate 方法详解,removeView()错误解决

错误: The specified child already has a parent. You must call removeView(). 解答: 这个错误很直白,就是你viewGroup.addView(childView); 中childView已经有父View了.错误原因很多,我主要讲下 mLayoutInflater.inflate(id, rootView, false);造成的这个错误.(该方法有两种,一种是2个参数,一种是3个参数). 2个参数: 第一个参数:layout的

Android ActionBar 关于tab的应用 以及 TabListener的方法详解

actionBar的tab标签应用以及TabListener的方法详解 package com.example.actionBarTest.actionBarTab; import android.app.*; import android.os.Bundle; import com.example.actionBarTest.R; import java.util.ArrayList; import java.util.List; /** * Created by Heyiyong on 20

Android——onCreate( )方法详解(转)

android开发之onCreate( )方法详解 onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int

Android应用盈利广告平台的嵌入方法详解

一.如何学习Android   android开发(这里不提platform和底层驱动)你需要对Java有个良好的基础,一般我们用Eclipse作为开发工具.对于过多的具体知识详细介绍我这里不展开,我只说我个人的学习方法和本人以为的好的步骤.   1.搭建环境:包括对Java和Eclipse及模拟器(有真机再好不过)的熟悉,对于android的tools和adb命令可以放到后面熟悉了解.   2.从helloworld开始:了解一个基本的android应用代码包含哪些,各部分做什么用.(这里只要

Android SDK离线安装方法详解(加速安装)

AndroidSDK在国内下载一直很慢··有时候通宵都下不了一点点,最后只有选择离线安装,现在发出离线安装地址和方法,希望对大家有帮助 一,首先下载SDK的安装包,android-sdk_r10-windows.zip(安装工具)解压到目录,如我的目录D:\programs\android-sdk-windows 下载地址:http://dl.google.com/android/android-sdk_r10-windows.zip(目前最新版) 二,然后新建以下 几个文件夹 platform