Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android fragment onHiddenChanged方法詳解

Android fragment onHiddenChanged方法詳解

編輯:關於Android編程

項目中,為了實現不同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中即可。

 


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved