日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Fragment间的通信

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fragment间的通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在網上看到的一篇文章,總結的很好?

為了重用Fragment的UI組件,創建的每個Fragment都應該是自包含的、有它自己的布局和行為的模塊化組件。一旦你定義了這些可重用的Fragment,你就可以把它們跟一個Activity關聯,并把它們跟應用程序的邏輯相連來實現全部的組合式UI。

? ? ? ?現實中我們經常想要一個Fragment跟另一個Fragment進行通信,例如,要基于一個用戶事件來改變內容。所有的Fragment間的通信都是通過跟關聯的Activity來完成的。另個Fragment不應該直接通信。也就是說Fragment間不直接通信,通過Activity轉一下,按java常規,轉一下多是使用Interface實現的。

定義Interface

? ? ? ?為了讓Fragment跟它的Activity通信,你可以在Fragment類中定義一個接口,并在它所屬的Activity中實現該接口。Fragment在它的onAttach()方法執行期間捕獲該接口的實現,然后就可以調用接口方法,以便跟Activity通信。

以下是Fragment跟Activity通信的示例:

?

[java]?view plaincopyprint?
  • public?class?HeadlinesFragment?extends?ListFragment?{??
  • ????OnHeadlineSelectedListener?mCallback;??
  • ??
  • ????//?Container?Activity?must?implement?this?interface??
  • ????public?interface?OnHeadlineSelectedListener?{??
  • ????????public?void?onArticleSelected(int?position);??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onAttach(Activity?activity)?{??
  • ????????super.onAttach(activity);??
  • ??????????
  • ????????//?This?makes?sure?that?the?container?activity?has?implemented??
  • ????????//?the?callback?interface.?If?not,?it?throws?an?exception??
  • ????????try?{??
  • ????????????mCallback?=?(OnHeadlineSelectedListener)?activity;??
  • ????????}?catch?(ClassCastException?e)?{??
  • ????????????throw?new?ClassCastException(activity.toString()??
  • ????????????????????+?"?must?implement?OnHeadlineSelectedListener");??
  • ????????}??
  • ????}??
  • ??????
  • ????...??
  • }??

  • ?

    ? ? ? 現在,這個Fragment就可以通過調用OnHealdlineSelectedListener接口實例mCallback的onArticleSelected()方法(或其他的接口中的方法)給Activity發送消息。

    例如,在Fragment中的下列方法會用戶點擊列表項時被調用。該Fragment使用回調接口把該事件發送給它的父Activity。

    [java]?view plaincopyprint?
  • @Override??
  • ???public?void?onListItemClick(ListView?l,?View?v,?int?position,?long?id)?{??
  • ???????//?Send?the?event?to?the?host?activity??
  • ???????mCallback.onArticleSelected(position);??
  • ???}??
  • ?

    實現Interface

    ?

    為了從Fragment中接收事件回調,包含Fragment的Activity必須實現Fragment類中定義的接口。

    例如,下面Activity實現了上面示例中定義的接口:

    [java]?view plaincopyprint?
  • public?static?class?MainActivity?extends?Activity??
  • ????????implements?HeadlinesFragment.OnHeadlineSelectedListener{??
  • ????...??
  • ??????
  • ????public?void?onArticleSelected(int?position)?{??
  • ????????//?The?user?selected?the?headline?of?an?article?from?the?HeadlinesFragment??
  • ????????//?Do?something?here?to?display?that?article??
  • ????}??
  • }??
  • ?


    把消息傳遞給另一個Fragment

    ?

    ? ? ? ? ?通過使用findFragmentById()方法捕獲Fragment實例,宿主Activity可以把消息發送給該Fragment,然后直接調用該Fragment的公共方法。

    ? ? ? ? 例如,上面的示例,Activty通過Interface的實現方法,傳遞數據到另一個Fragment。

    ?

    [java]?view plaincopyprint?
  • public?static?class?MainActivity?extends?Activity??
  • ????????implements?HeadlinesFragment.OnHeadlineSelectedListener{??
  • ????...??
  • ??
  • ????public?void?onArticleSelected(int?position)?{??
  • ????????//?The?user?selected?the?headline?of?an?article?from?the?HeadlinesFragment??
  • ????????//?Do?something?here?to?display?that?article??
  • ??
  • ????????ArticleFragment?articleFrag?=?(ArticleFragment)??
  • ????????????????getSupportFragmentManager().findFragmentById(R.id.article_fragment);??
  • ??
  • ????????if?(articleFrag?!=?null)?{??
  • ????????????//?If?article?frag?is?available,?we're?in?two-pane?layout...??
  • ??
  • ????????????//?Call?a?method?in?the?ArticleFragment?to?update?its?content??
  • ????????????articleFrag.updateArticleView(position);??
  • ????????}?else?{??
  • ????????????//?Otherwise,?we're?in?the?one-pane?layout?and?must?swap?frags...??
  • ??
  • ????????????//?Create?fragment?and?give?it?an?argument?for?the?selected?article??
  • ????????????ArticleFragment?newFragment?=?new?ArticleFragment();??
  • ????????????Bundle?args?=?new?Bundle();??
  • ????????????args.putInt(ArticleFragment.ARG_POSITION,?position);??
  • ????????????newFragment.setArguments(args);??
  • ??????????
  • ????????????FragmentTransaction?transaction?=?getSupportFragmentManager().beginTransaction();??
  • ??
  • ????????????//?Replace?whatever?is?in?the?fragment_container?view?with?this?fragment,??
  • ????????????//?and?add?the?transaction?to?the?back?stack?so?the?user?can?navigate?back??
  • ????????????transaction.replace(R.id.fragment_container,?newFragment);??
  • ????????????transaction.addToBackStack(null);??
  • ??
  • ????????????//?Commit?the?transaction??
  • ????????????transaction.commit();??
  • ????????}??
  • ????}??
  • }??


  • Fragment中使用左右滑動菜單?中應用到了Fragment間的通信

    ?

    參考:http://developer.android.com/training/basics/fragments/communicating.html

    /**
    * @author 張興業
    * 郵箱:xy-zhang#163.com
    * android開發進階群:241395671
    *
    */

    轉載于:https://www.cnblogs.com/hudabing/p/4508236.html

    總結

    以上是生活随笔為你收集整理的Fragment间的通信的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 色多多黄色 | 日本韩国在线观看 | 免费手机av | 午夜视频在线观看免费视频 | 欧美大片一级 | 麻豆免费视频网站 | 亚洲AV无码久久精品浪潮 | 亚洲熟妇无码一区二区三区导航 | 欧美一区二区三区免费观看 | 日韩在线无 | 国产福利资源 | 精品国产aⅴ一区二区三区东京热 | 天天干天天干天天操 | 欧美成人激情视频 | 亚洲1024| 人妻激情文学 | 国产一二三四在线 | 亚洲一区亚洲二区 | 中文一二三区 | 美女大黄网站 | 国产1区2区3区4区 | 偷看洗澡一二三区美女 | 草草国产 | 午夜色网 | 国产欧美一区二区三区白浆喷水 | av手机免费看 | 午夜理伦三级做爰电影 | 狠狠干2022 | 成人精品视频网站 | 高清无码视频直接看 | 97久久超碰 | 熟女俱乐部五十路六十路av | eeuss一区二区| 亚洲天堂成人在线观看 | 日本免费无人高清 | 美女精品视频 | 精品国产aⅴ | 麻豆精品自拍 | 国产成人精品免费看视频 | 91免费看片 | 日韩美女视频在线 | 无人在线观看高清视频 单曲 | 国产高清一 | 影音先锋国产资源 | 一区在线免费观看 | 久久福利片| 欧洲熟妇的性久久久久久 | 国产成人综合在线 | av在线免费观看网站 | 日本h漫在线观看 | 青青青视频在线播放 | 国产亚洲精品一区二区三区 | av爱爱网站| 国产夫妻性生活视频 | 国产三级自拍 | 亚洲视频在线观看网址 | tube日本69第一次 | 高清国产在线观看 | 日韩精品欧美精品 | 8x8ⅹ8成人免费视频观看 | 亚洲一区中文字幕在线观看 | 性欧美bb | 天天射天天干 | 在线日韩一区二区 | 国产亚洲一区二区三区四区 | 在线观看中文 | 91日批 | 九色网址 | 黄在线网站 | 亚洲黄色片网站 | av最新地址 | 欧美性猛交99久久久久99按摩 | 熟妇人妻va精品中文字幕 | 花样视频污 | www.99爱| 亚洲天堂2020 | www.白白色 | 欧美性生交xxxxxdddd | 精品国产99久久久久久宅男i | 久热精品视频在线观看 | 在线免费播放 | 午夜亚洲成人 | 国产深夜福利 | 国产人成一区二区三区影院 | 四虎视频国产精品免费入口 | 黄色av网址大全 | 亚洲女同在线 | 奇米影视在线 | 野花视频在线观看免费 | 黄色av播放 | 精品动漫一区二区 | 免费成人黄 | 国产乱子伦精品无码专区 | 日日夜夜精品视频 | 一级在线看 | 亚洲黄色小说网 | 日本视频网站在线观看 | 欧美大片免费 | 日本视频在线看 |