1. 程式人生 > >基於Fragment回撥介面委託工作任務給託管Activity

基於Fragment回撥介面委託工作任務給託管Activity

要委託工作任務給託管activity,通常的做法是由fragment定義名為Callbacks的回撥介面。
回撥介面定義fragment委託給Activity處理的工作任務。
任何打算託管fragment的Activity都必須實現它。

有了回撥介面,就不用關心誰是託管者,
fragment可以直接呼叫託管Activity的方法。

回撥介面的使用方法類似如下程式碼:

public class CrimeFragment extends Fragment{
    .............
    private Callbacks mCallbacks;

    //定義一個介面
public interface Callbacks { void onCrimeUpdated( ); } @Override public void onAttach(Context context) { super.onAttach(context); //Fragment attach到Activity時,將Activity強轉為Callbacks儲存 mCallbacks = (Callbacks)context; } @Override public void
onDetach() { super.onDetach(); //detach賦值為null mCallbacks = null; } ........... private void updateCrime() { CrimeLab.get(getActivity().getApplicationContext()).updateCrime(mCrime); //需要時,就呼叫Callbacks定義介面函式 mCallbacks.onCrimeUpdated(); } }

我們再看看託管Activity的實現示例:

public class CrimeListActivity extends SingleFragmentActivity
        implements CrimeListFragment.Callbacks, CrimeFragment.Callbacks {
    ..............
    //實現介面中的函式
    @Override
    public void onCrimeUpdated() {
        //Activity持有的另一個Fragment
        CrimeListFragment listFragment = (CrimeListFragment)
                getSupportFragmentManager().findFragmentById(R.id.fragment_container);

        //呼叫另一個Fragment的函式
        listFragment.updateUI();
    }
}

可以看出,通過Fragment的回撥介面,可以方便的實現同一個託管activity持有的多個Fragment之間的通訊。

相關推薦

基於Fragment介面委託工作任務託管Activity

要委託工作任務給託管activity,通常的做法是由fragment定義名為Callbacks的回撥介面。 回撥介面定義fragment委託給Activity處理的工作任務。 任何打算託管fragment的Activity都必須實現它。 有了回撥介面,就不

C#POST 支付寶/微信介面

一般支付寶/微信的回撥介面都會返回xml格式,下面是呼叫類似這種介面的辦法: public async Task<string> GetData() { string requestUrl = "http://localhost:xxx/xx/xxxx/xxx/xxxx

淺析微信支付:申請退款、退款介面、查詢退款

本文是【淺析微信支付】系列文章的第八篇,主要講解商戶如何處理微信申請退款、退款回撥、查詢退款介面,其中有一些坑的地方,會著重強調。 淺析微信支付系列已經更新七篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:查詢訂單和關閉訂單 淺析微信支付:支付結果通知 淺析微信支付:統一下單介面

ThreadUtil 多執行緒處理List,處理具體的任務

每次想多執行緒處理一個大的結果集的時候 都需要寫一大堆程式碼,自己寫了個工具類 方便使用 package com.guige.fss.common.util; import com.guige.fss.common.exception.BusinessException; im

Android中點選事件介面踩坑心得

有時候寫程式碼的時候有這樣的功能要求,如在ListView或recyclerView中的Item中的控制元件(如Button,TextView)上添加回調介面事件。其實難點就在添加回調介面事件上,怎麼寫介面,介面回撥在哪裡,這才是關鍵。下面是個例子: 介面的寫法:一下是兩介

[Android]RecyclerView基本使用+adapter介面實現點選事件

一、概述 RrcyclerView是ListView的加強版,不僅可以輕鬆實現和ListView同樣的效果,還優化了ListView中存在的各種不同之處。 Android官方推薦我們使用RecyclerView。 二、基本用法 1.首先需要在專案的build.gradle中新增相

第三方支付平臺支付介面介面開發

作為開放式的B/S架構程式,無論所屬電商,金融,機械製造,企業OA,ERP,CRM,CMS等等行業或系統中,第三方支付以及銀聯支付的業務一定是客戶關心所在,也是保證客戶系統盈利運營的一個重要保障。通常這種B2C或者C2C系統的開發,商戶使用者所關注的支付平臺大多離不開“阿里支付寶,快錢,騰訊財付通,易寶支

解決:接入微信支付,調不起介面WXPayEntryActivity

最近開發公司SDK需要接入微信支付功能,於是上了微信開發者平臺,下載微信的SDK,按著文件接入。當我進行微信支付,需要調起微信客戶端,但是卻沒有。而微信回撥WXPayEntryActivity也沒有被回撥起來。這就很奇怪了,看回文件,說要把WXPayEntryActivity

一個自定義dialog提供確定和取消按鈕的介面

public class MessageDialog { Context context; AlertDialog dialog; AlertDialog.Builder bu

android 萬能介面

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">剛做android開發時經常遇到資料傳遞的問題,因為對Java也不是很熟

Spring生命週期不可不知的介面

上回說到 Spring bean生命週期中的InitializingBean介面,我們瞭解到這只是spring bean生命週期中修改bean的諸多方式之一,其實在整個生命週期中,修改bean的方式大致有如下幾種: 實現 InitializingBean介面 的 afterPropertiesSet

android中的-介面

發現很多初學者對於回撥,介面,抽象  等概念理解的不是很透徹。 今天就以我的經驗把 介面回撥給大家闡述一下。適合初學者看看。 先簡單說說我的理解吧,   所謂的介面回撥。 你先將介面定義好,然後在特定的條件下條用它。  可能很多初學者開始的時候很疑惑,其實這也東西你天天都在

OK介面資料型別-泛型

在OK請求完成之後: handler.post(new Runnable() { @Override public void run() { Class<Object> genericUtil = GenericUtil.getGener

android介面筆記

上圖: 佈局檔案: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/too

Activity和Service之間使用Binder和介面進行通訊

Activity和Service之間的通訊方式有多種:通過broadcast、擴充套件Binder類、使用Messenger、使用AIDL等。 擴充套件Binder類使用場景 如果你的服務僅供本地應用使用,不需要跨程序工作,則可以實現擴充套件Binder 類,讓你的客戶

Android中Service與Activity的通訊---介面方式

最近在技術交流群中有人問到:要實現service與activity的高強度通訊用什麼方法? 群友回答的是用handler,但面試官好像不太滿意,後來本人查找了下資料,得到個人的結論:service與activity之前的通訊方式有很多,回撥介面方式、觀察者模式、廣播、還有h

android 介面學習(自定義Dialog 獲取資料資料)

功能: 將單獨的一個Dialog提取出來以複用程式碼,然後在activity中去new 一個Dialog出來,能夠獲取Dialog選取的資料; 具體實現 TopicSingleChoiceDialog.java private int topicID=

為什麼說過濾器Filter基於函式

 FilterChain是回撥介面,doFilter(request,response)是回撥方法,ApplicationFilterChain是實現類,裡面能得到實現了Filter介面的實現類xxxFilter,在doFilter(request,response)

FragmentActivity互動,Fragment

在一些情況下,你可能需要fragment與activity共享事件。 這樣做的一個好方法是在fragment內部定義一個回撥介面,並需要宿主activity實現它。當activity通過介面接收到回撥時,可以在必要時與佈局中的其它fragment共享資訊。 舉個例子,如果

Callback非同步介面

/** * 用於網路請求結果的回撥的抽象類,使用該類可以保證網路請求在主執行緒發起,在子執行緒回撥 * 使用的非同步任務,並且保證了非同步任務的建立在主執行緒執行 */ public abst