最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android Fragment與Activity之間的相互通信實例代碼

 更新時間:2016年11月01日 14:49:18   作者:Mersens  
這篇文章主要介紹了Android Fragment與Activity之間的相互通信的相關(guān)資料,并附簡單實例代碼,需要的朋友可以參考下

Android Fragment與Activity之間的相互通信

前言

自從Android3.0引入Fragment之后,主要是為了支持動態(tài)靈活的界面設計和屏幕的適配問題。Fragmenty不能單獨存在,必須依賴Activity作為視圖展示的一部分,同事它具有自己的生命周期,接收它自己的事件,具有更加靈活的特性,如今Fragment已經(jīng)被廣泛的應用到App開發(fā)中,最常見的就是單Activity多Fragment的模式。Fragment依賴于Activity而存在,就不可避免需要與Activity進行交互,在這里就簡單的介紹三種常用的交互方式。

一、接口方式

在fragment類中定義一個接口并在Activity中實現(xiàn)它。Fragment在onAttach()回調(diào)函數(shù)中獲取接口的具體實現(xiàn)的對象。后面,fragment就可以調(diào)用接口中的方法實現(xiàn)與Activity的通信。

在Android5.0之后廢除了onAttach(Activity activity)的方法,轉(zhuǎn)而使用onAttach(Context context),也就是傳遞的參數(shù)發(fā)生變化

public interface showMsgListener{
    void showMsg(String str);
  }

  private showMsgListener msgListener;

  @Override
  public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
      if(activity!=null){
        msgListener=(MainActivity)activity;
      }
    } catch (ClassCastException e) {
      throw new ClassCastException(activity.toString()
          + " must implement showMsgListener");
    }
  }

    mButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        msgListener.showMsg("Hello Android!(接口)");
      }
    });

在Activity中需要實現(xiàn)該接口

 @Override
  public void showMsg(String str) {
    Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
  }

二、廣播

在Activity中注冊廣播接收器,在Fragment中發(fā)送廣播

  private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
      String action = intent.getAction();
      if (action.equals(ACTION_NAME)) {
        String msg = intent.getStringExtra("msg");
        Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
      }

    }
  };

  public void registerBoradcastReceiver() {
    IntentFilter myIntentFilter = new IntentFilter();
    myIntentFilter.addAction(ACTION_NAME);
    registerReceiver(mBroadcastReceiver, myIntentFilter);
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(mBroadcastReceiver);
  }

三、Fragment 從Activity獲取數(shù)據(jù)

在Fragment 的getInstance()方法中setArguments()設置參數(shù)

public static Fragment getInstance(String msg){
    Bundle bundle = new Bundle();
    bundle.putString("msg",msg);
    MainFragment fragment=new MainFragment();
    fragment.setArguments(bundle);
    return fragment;
  }

再通過getArguments()方法獲取

 public void initDatas() {
    Bundle bundle=getArguments();
    if(bundle!=null){
      String msg=bundle.getString("msg");
      Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
    }
  }

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Flutter實現(xiàn)頁面路由及404路由攔截

    Flutter實現(xiàn)頁面路由及404路由攔截

    這篇文章介紹了Flutter實現(xiàn)頁面路由及404路由攔截的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-11-11
  • Android實現(xiàn)上下菜單雙向滑動

    Android實現(xiàn)上下菜單雙向滑動

    這篇文章主要為大家詳細介紹了Android實現(xiàn)上下菜單雙向滑動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Android LineChart繪制多條曲線的方法

    Android LineChart繪制多條曲線的方法

    這篇文章主要為大家詳細介紹了Android LineChart繪制多條曲線的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 如何在WorkManager中處理異步任務詳解

    如何在WorkManager中處理異步任務詳解

    這篇文章主要給大家介紹了關(guān)于如何在WorkManager中處理異步任務的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • Android如何防止apk程序被反編譯(尊重勞動成果)

    Android如何防止apk程序被反編譯(尊重勞動成果)

    作為Android應用開發(fā)者,不得不面對一個尷尬的局面,就是自己辛辛苦苦開發(fā)的應用可以被別人很輕易的就反編譯出來,天下痛苦之事莫過于此啊,本文會介紹一種防止apk程序被反編譯的方法,感興趣的朋友可以了解下哦
    2013-01-01
  • Android中ConstraintLayout約束布局的最全詳細解析

    Android中ConstraintLayout約束布局的最全詳細解析

    ConstraintLayout是Google在Google?I/O?2016大會上發(fā)布的一種新的布局容器(ViewGroup),它支持以靈活的方式來放置子控件和調(diào)整子控件的大小,下面這篇文章主要給大家介紹了關(guān)于Android中ConstraintLayout約束布局詳細解析的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • android 顯示gif圖片實例詳解

    android 顯示gif圖片實例詳解

    本文主要介紹android 顯示gif圖片的知識,這里整理相關(guān)資料及簡單實例代碼,有需要的小伙伴可以參考下
    2016-09-09
  • Android編程實現(xiàn)計算兩個日期之間天數(shù)并打印所有日期的方法

    Android編程實現(xiàn)計算兩個日期之間天數(shù)并打印所有日期的方法

    這篇文章主要介紹了Android編程實現(xiàn)計算兩個日期之間天數(shù)并打印所有日期的方法,涉及Android日期時間相關(guān)轉(zhuǎn)換與運算操作技巧,需要的朋友可以參考下
    2018-01-01
  • Android 架構(gòu)之數(shù)據(jù)庫框架升級

    Android 架構(gòu)之數(shù)據(jù)庫框架升級

    上一篇講解了# Android 架構(gòu)之數(shù)據(jù)框架搭建 ,里面含有數(shù)據(jù)庫最基礎的增刪改查功能,不過只考慮了單數(shù)據(jù)庫,開發(fā)者可以舉一反三按照對應思路設計多數(shù)據(jù)庫架構(gòu)。 在本篇里,將會講解令開發(fā)者比較頭疼的數(shù)據(jù)庫升級,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • Android WebView開發(fā)之WebView與Native交互

    Android WebView開發(fā)之WebView與Native交互

    隨著H5的廣泛使用,Android開發(fā)過程中免不了會使用網(wǎng)頁來做展示,那么web與native之間的通信就顯得尤其重要了,其實際上是JavaScript與java之間的通信。本文將為大家詳細介紹二者是如何實現(xiàn)交互的,需要的朋友可以參考一下
    2021-12-12

最新評論

嵩明县| 滦南县| 璧山县| 綦江县| 沂源县| 青阳县| 团风县| 佛坪县| 秭归县| 扎赉特旗| 定襄县| 崇信县| 乐东| 克拉玛依市| 读书| 崇左市| 平利县| 宁武县| 湘乡市| 凤冈县| 滦南县| 板桥市| 北安市| 四子王旗| 上杭县| 河池市| 宜阳县| 洮南市| 鸡东县| 神池县| 咸阳市| 昌平区| 沅江市| 四平市| 辉南县| 通化市| 道真| 商水县| 清水县| 祁连县| 高清|