1. 程式人生 > >兩個Activity中的Fragment之間的引數傳遞

兩個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物件   
        }  
  1. 同時在Fragment1中的某個方法例項化該介面

PS:在這裡我是直接傳入一個Bean物件的,因為我在onDataChanged(HarvestBean bean);方法裡面設定的引數為Bean

    onDataChangedListener listener = (onDataChangedListener) getActivity();  
    listener.onDataChanged((HarvestBean) msg.obj);  

3.在父Activity中實現該介面並重寫onDataChanged();方法,同時通過呼叫Fragment2的updateData();方法更新Fragment2的資料。

  1. 在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.
    }
})

使用這種回撥方式只要兩個類之間可以相互調去對方的方法,則可以實現資料的傳遞。可以重點掌握和使用。

今天先到這裡吧,下次在補充,有什麼不好的地方,希望各位大神指點,畢竟我是一隻小菜鳥。

相關推薦

ActivityFragment之間引數傳遞

這是我第一次寫部落格,也是在大神的指點下,因為看到大神都說菜鳥就要多寫部落格才可以成長,於是我鼓足勇氣開始了。 自己在網上查了很多: 第一:大致總結網上的有Activity和Activity之間的資料傳遞,通過startActivity()和star

activityfragment之間傳遞資料

首先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 StudioActivity之間的轉換及資料的傳遞

在建立好兩個Activity之後,分別命名為 MainActivity 和 SecondActivity。 一,Activity之間的切換         在MainActivity中點選Login Button鍵,然後跳轉到SecondActivity,並將資料傳給Ma

AndroidActivity之間簡單通信

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

AndroidActivity之間引數傳遞

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

AndroidActivityFragment之間資料相互傳遞

一、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