色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當(dāng)前位置:首頁 > 學(xué)習(xí)資源 > 講師博文 > Fragment與activity間的通信

Fragment與activity間的通信 時間:2018-10-28      來源:華清遠(yuǎn)見

上次介紹了Fragment的使用,本文主要介紹Fragment與所屬Activity之間的通信以及生命周期

1.3.1 activity向Fragment傳遞數(shù)據(jù)

Fragment與所屬的activity之間怎么進行數(shù)據(jù)的傳遞呢?

下面我們我們在主活動中再添加一個EditText和一個Button按鈕,在Fragment03中添加一個TextView,當(dāng)我們在點擊這個按鈕后,把EditText中的數(shù)據(jù)顯示到Fragment03中的TextView,這就實現(xiàn)了activity向Fragment中傳遞數(shù)據(jù)。代碼如下:

android :id ="@+id/ et_main "

android : layout_width =" match_parent "

android : layout_height =" wrap_content "/>

android : layout_width =" wrap_content "

android : layout_height =" wrap_content "

android : text傳遞=""

android : onClick =" click4 "/>

這里我們在activity main.xml中添加EditText和Button,并為Button設(shè)置了點擊屬性

public void click4 ( View v) {

EditText et_main = ( EditText ) findViewById (R.id. et_main );

String text = et_main . getText (). toString ();

fg3. settext ( text );

}

上面我們在主活動中添加按鈕點擊方法,按鈕點擊后先獲得EditText中的內(nèi)容,在拿到Fragment03的對象fg3,然后調(diào)用settext的方法,這個方法是Fragment03類的一個方法,在這個方法中設(shè)置TextView的內(nèi)容。代碼如下:

public class Fragment03 extends Fragment {

private TextView tv;

@Override

public View onCreateView ( LayoutInflater inflater , ViewGroup container ,

Bundle savedInstanceState ) {

// TODO Auto - generated method stub

View v = inflater . inflate (R. layout . fragment03 , null );

tv = ( TextView ) v. findViewById (R.id.tv );

return v;

}

public void settext ( String text ) {

tv. setText ( text );

}

}

我們在EditText中輸入Hello,點擊傳遞按鈕后,就會在Fragment03中顯示Hello,如下圖:

 

 

這樣就實現(xiàn)了activity向Fragment傳遞數(shù)據(jù)。

1.3.2 Fragment向activity傳遞數(shù)據(jù)

下面我們再在Fragment01中創(chuàng)建一個EditText和Button,當(dāng)我們點擊按鈕后,就會把EditText中的數(shù)據(jù)傳遞到活動中EditText中并顯示,代碼如下:

android :id ="@+id/ et_frag "

android : layout_width =" wrap_content "

android : layout_height =" wrap_content "/>

android :id ="@+id/bt"

android : layout_width =" wrap_content "

android : layout_height =" wrap_content "

android : text傳遞=""/ >

接著我們要在主活動MainActivity中定義一個方法,用于顯示主活動EditText中的數(shù)據(jù)

public void settext ( String text ) {

EditText et_main = ( EditText ) findViewById (R.id. et_main );

et_main . setText ( text );

}

那么我們到底怎么樣把數(shù)據(jù)從Fragment01中傳入到主活動中呢?我們通過調(diào)用getActivity獲得與這個Fargment相關(guān)聯(lián)的活動,然后調(diào)用活動的settext的方法顯示數(shù)據(jù)。代碼如下:

public View onCreateView ( LayoutInflater inflater , ViewGroup container ,

Bundle savedInstanceState ) {

View v = inflater . inflate (R. layout . fragment01 , null );

Button bt = ( Button ) v. findViewById (R.id.bt );

et_frag = ( EditText ) v. findViewById (R.id. et_frag );

bt. setOnClickListener (new OnClickListener () {

@Override

public void onClick ( View v) {

// TODO Auto - generated method stub

String text = et_frag . getText (). toString ();

(( MainActivity ) getActivity ()). settext ( text );

}

});

return v;

}

如圖,當(dāng)我們在Fragment01的EditText中輸入World,點擊傳遞按鈕后,World就會顯示到主活動的EditText中

 

 

- 這樣我們就實現(xiàn)Fragment01向Activity傳遞數(shù)據(jù)。

1.4 Fragment的生命周期

和活動一樣,F(xiàn)ragment也有自己的生命周期,并且它和活動的生命周期基本上一樣。

Fragment類提供了一系列的回調(diào)方法,其中活動中有的回調(diào)方法,碎片中幾乎都有,不過碎片還提供一些附加的回調(diào)方法

1. onAttach()

當(dāng)碎片和活動建立關(guān)聯(lián)的時候調(diào)用。

2. onCreateView()

為碎片創(chuàng)建視圖(加載布局)時調(diào)用。

3. onActivityCreated()

確保與碎片相關(guān)聯(lián)的活動一定已經(jīng)創(chuàng)建完畢的時候調(diào)用。

4. onDestroyView()

當(dāng)與碎片關(guān)聯(lián)的視圖被移除的時候調(diào)用。

5. onDetach()

當(dāng)碎片和活動解除關(guān)聯(lián)的時候調(diào)用。

Fragment完整的生命周期如下

 

 

下面我們通過例子實踐一下,這里我們使用的是前面Fragment簡單使用的案例,代碼如

下:

public class RightFragment extends Fragment {

public static final String TAG = " RightFragment ";

@Override

public void onAttach ( Activity activity ) {

super . onAttach ( activity );

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 ) {

Log.d(TAG , " onCreateView ");

View view = inflater . inflate (R. layout . right_fragment , container , false );

return view ;

}

@Override

public void onActivityCreated ( 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 ");

}

}

重新運行程序,打印信息如下:

 

 

可以看到,當(dāng)RightFragment第一次被加載到屏幕上時,會依次執(zhí)行onAttach()、onCreate()、onCreateView()、onActivityCreated()法。

然后點擊LeftFragment中的按鈕,此時打印如下:

 

 

由于AnotherRightFragment替換了RightFragment,此時的RightFragment進入了停止?fàn)顟B(tài),因此onPause()、onStop()和onDestroyView()方法會得到執(zhí)行。當(dāng)然如果在替換的時候沒有調(diào)用addToBackStack()方法,此時的RightFragment就會進入銷毀狀態(tài),onDestroy()和onDetach()方

法就會得到執(zhí)行。

接著按下Back鍵,RightFragment會重新回到屏幕,打印信息如下:

 

 

由于RightFragment重新回

到了運行狀態(tài),因此onActivityCreated()、onStart()和onResume()方法會得到執(zhí)行。注意

此時onCreate()和onCreateView()方法并不會執(zhí)行,因為我們借助了addToBackStack()方法

使得RightFragment和它的視圖并沒有銷毀。

再次按下Back鍵退出程序,打印信息如下:

 

 

依次會執(zhí)行onPause()、onStop()、onDestroyView()、onDestroy()和onDetach()方法,終

將活動和碎片一起銷毀。這樣碎片完整的生命周期你也體驗了一遍,是不是理解得更加深刻了?

上一篇:長安.ARM體系結(jié)構(gòu).七日談

下一篇:SOAP嵌入式linux下的應(yīng)用(一)

戳我查看嵌入式每月就業(yè)風(fēng)云榜

點我了解華清遠(yuǎn)見高校學(xué)霸學(xué)習(xí)秘籍

猜你關(guān)心企業(yè)是如何評價華清學(xué)員的

干貨分享
相關(guān)新聞
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2024 北京華清遠(yuǎn)見科技發(fā)展有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 日韩电影免费在线观看| 北条麻妃99精品青青久久| 国产精品国模在线| 国产美女被下药99| 亚洲a一级视频| 日韩电影中文字幕在线观看| 日韩毛片中文字幕| 国产亚洲精品美女久久久| 久久精品99国产精品酒店日本| 欧美另类在线播放| 国模精品视频一区二区三区| 奇米一区二区三区四区久久| 国产热re99久久6国产精品| 亚洲高清久久网| 在线播放国产一区中文字幕剧情欧美 | 亚洲网站在线观看| 久久精品人人做人人爽| 精品久久久久久电影| 性色av香蕉一区二区| 国产精品欧美一区二区三区奶水| 亚洲精品日韩av| 这里只有精品视频在线| 欧美黄色性视频| 国产精自产拍久久久久久蜜| 日韩av资源在线播放| 久久国产精品网站| 91a在线视频| 亚洲国产成人久久| 久久久精品999| 国产精品69av| 亚洲欧美日韩国产中文| 黑人巨大精品欧美一区二区三区 | 美女少妇精品视频| 成人春色激情网| 亚洲一二三在线| 8x拔播拔播x8国产精品| 亚洲精品aⅴ中文字幕乱码| 欧美大胆a视频| 国产精品一区二区三区成人| 欧美高清第一页| 亚洲电影免费观看高清完整版在线 |