兩個Activity中的Fragment之間的引數傳遞
這是我第一次寫部落格,也是在大神的指點下,因為看到大神都說菜鳥就要多寫部落格才可以成長,於是我鼓足勇氣開始了。
自己在網上查了很多:
第一:大致總結網上的有Activity和Activity之間的資料傳遞,通過startActivity()和startActivityForResult(),前者只能從前到後通過Intent傳遞資料,後者則可以相互之間傳遞資料(具體做法可以百度,大神都寫的很清楚了)。
第二:Activity和自身的Fragment之間的引數傳遞,這個很簡單,Activity傳遞到Fagment只需要在動態的新增Fragment的時候把資料通過Bundle,setAugments(Bundle),(此處主要寫的是動態配置情況,靜態的新增Fragment也沒差。)
MyFragment myFragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putString("DATA",values);//這裡的values就是我們要傳的值
myFragment.setArguments(bundle);
第二種方式,是在宿主Activity中定義方法,將要傳遞的值傳遞到Fragment中,在Fragment中的onAttach方法中,獲取到這個值。
//宿主activity中的getTitles()方法
public String getTitles(){
return "hello";
}
//Fragment中的onAttach方法
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
//通過強轉成宿主activity,就可以獲取到傳遞過來的資料
titles = ((MainActivity) activity).getTitles();
}
第三:同一個Activity中的不同Fragment之間的引數傳遞.
情況一:Fragment之間的顯示和隱藏是使用replace去實現的
對於情況一,我們可以使用fragment.setArgument()方法傳遞資料(詳細參考於大神的blog)
情況二:Fragment之間的顯示和隱藏是使用hide和show方法實現的
重點說說第二種情況吧,通過介面回撥的方法實現資料傳遞………………………………………………
1. 設定介面回撥的步驟:
public interface onDataChangedListener {
void onDataChanged(HarvestBean bean); //引數為使用者需要傳遞的資料內容,這裡我用的是一個Bean物件
}
- 同時在Fragment1中的某個方法例項化該介面
PS:在這裡我是直接傳入一個Bean物件的,因為我在onDataChanged(HarvestBean bean);方法裡面設定的引數為Bean
onDataChangedListener listener = (onDataChangedListener) getActivity();
listener.onDataChanged((HarvestBean) msg.obj);
3.在父Activity中實現該介面並重寫onDataChanged();方法,同時通過呼叫Fragment2的updateData();方法更新Fragment2的資料。
- 在Fragment1裡面寫setDataChangedListener(onDataChangedListener l)方法。
/**Fragment1中寫的,以下三個*/
private onDataChangedListener listener ;
//此方法用與在
public void setonDataChangedListener (onDataChangedListener l){
listener = l;
}
//在對應的促發方法裡面呼叫,比如監聽
if(listener != null){
listener .onDataChanged((HarvestBean) msg.obj);
}
Fragment2中通過Activity得到Fragment1的物件,具體可以參考上面通過強制型別轉化的方式得到Activity的物件,從而得到Fragment1.
/**Fragment2中呼叫Fragment1裡面的set方法*/
getActivity().fragment1.setsetonDataChangedListener(new onDataChangedListener(){
@Override
onDataChanged((HarvestBean) msg.obj){
//獲取到Fragment1裡面的資料obj.
}
})
使用這種回撥方式只要兩個類之間可以相互調去對方的方法,則可以實現資料的傳遞。可以重點掌握和使用。
今天先到這裡吧,下次在補充,有什麼不好的地方,希望各位大神指點,畢竟我是一隻小菜鳥。
相關推薦
兩個Activity中的Fragment之間的引數傳遞
這是我第一次寫部落格,也是在大神的指點下,因為看到大神都說菜鳥就要多寫部落格才可以成長,於是我鼓足勇氣開始了。 自己在網上查了很多: 第一:大致總結網上的有Activity和Activity之間的資料傳遞,通過startActivity()和star
activity與fragment之間的傳遞資料
首先activity之間的資料傳遞就是 用intent和intent+bundle intent 傳遞 Intent i= new Intent(MainActivity.this,TheAty.class); i.putExtra("date","Hello
Android 實現兩個activity跳轉之間加入進度條
場景是:在activity1點選了按鈕之後跳轉到activity2,但是在點選之後,有大概六七秒的時間還停留在activity1,這樣給使用者的體驗不是很友好。 在activity1裡面: 先定義 private static ProgressDialog dia
Android Studio中兩個Activity之間的轉換及資料的傳遞
在建立好兩個Activity之後,分別命名為 MainActivity 和 SecondActivity。 一,Activity之間的切換 在MainActivity中點選Login Button鍵,然後跳轉到SecondActivity,並將資料傳給Ma
Android中兩個Activity之間簡單通信
idg tin test ide button ima 接收 9.png set 在Android中,一個界面被稱為一個activity,在兩個界面之間通信,采用的是使用一個中間傳話者(即Intent類)的模式,而不是直接通信。 下面演示如何實現兩個activity之間的通
Android Intent傳值(兩個Activity之間傳遞資料)
在兩個Activity之間傳遞資料,最終都是通過Intent傳遞,但設定資料和儲存資料方式有兩種(使用Intent 和 Bundle),分別對應如下: 設定資料(MainActivity.java) 方法一:1.直接用intent.putExtra(“name”,“張三”)
兩個Fragment之間如何傳遞資料
FragmentA啟動FragmentB,做一些選擇操作後,返回FragmentA,需要把FragmentB裡面選擇的資料傳回來。有什麼辦法? Fragment之間不能直接通訊,必須通過Activity來完成,具體步驟。 1. 在FragmentA中定義通訊介面,通過該介面向Activity傳送資料。
多個Activity中傳遞簡單引數
佈局檔案: actiity_main: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="h
兩個Activity之間的資料傳遞(使用簡單的intent方法)
android程式設計學習中,最近在編寫一個簡單的android專案,實現在TwoActivity(書籍列表)中點選LisView的任意item傳遞書名,給ThreeAvtivity(章節列表),通過接收到的資料(書名)確定顯示書的章節目錄,使用的是intent方法。其中T
Android中Activity之間引數傳遞
Intent:一直穿梭在Activity之間,它不光只是為了使Activity之間進行跳轉。在跳轉的時候,還可以進行Acivity之間的引數傳遞。 下面舉幾個列子。以MianActivity,TheActivity為例子。 MianActivity類 In
Android 兩個Activity之間傳遞資料及返回
從Activity1帶引數跳轉到Activity2這個經常用到,比較熟悉,但如何從Activity2將資料返回給Activity1呢?這個其實也不麻煩,動手敲一下就知道了。 Activity1程式碼:public class MainActivity extends A
在兩個activity之間使用intent傳遞list型別的物件
在兩個activity之間傳遞list型別的物件。 第一個介面 import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map;
Android 兩個fragment之間資料傳遞
一、在Activity把值傳入fragment中可以直接用fragment中的setArguments。 二、兩個fragment之間的資料傳遞 1、首先需在第一個fragment中獲得FragmentManager和FragmentTransction: Fragmen
兩個Activity之間傳遞List資料
一、List<T>的Bean物件,Bean類實現Serializable介面 public class WordReview implements Serializable {
在兩個Activity之間如何傳遞一張圖片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_target); ByteArrayOu
兩個Activity之間資料的傳遞
MainActivity package com.example.mac.sendargs; import android.content.Intent; import android.supp
Android中Activity與Fragment之間資料相互傳遞
一、Activity啟動Activity Intent intent = new Intent(this,MainListActivity.class); startActivity(intent); Activity與Activity傳遞資料 I
3. 呼叫另一個Activity,並兩個Activity之間相互傳遞資料
一,在一個Activity中呼叫另一個Activity 利用 android.content.Intent 物件實現從一個Activity跳轉到另一個Activity 例如:從FirstActivity跳轉到SecondActivity /* 關鍵程式碼
兩個Activity之間通過Intent相互(雙向)傳遞資料
兩個Activity通過Intent相互交換資料,在Activity中用一個Button 選擇是否接受資料,不能直接寫在onCreate中否則在Activity1 中獲取從Activity2傳送的資料時會崩潰,原因是因為在Activity中會通過Intent再建立一個Act
兩個Activity之間傳遞資料的全部方法以及Parcelable介面的用法
兩個Activity之間是通過Intent來完成跳轉的: Intent除了完成跳轉Activity之外還可以封裝資料.在這兩個Activity中,如果傳遞單一的資料,直接把資料封裝進Intent即可: 方法一: 直接把資料封裝進Intent即可: Acti