Android --- 運行時Fragment如何獲取Activity中的數據,又如何將數據傳遞到Activity中呢?

1.通過 getActivity() 方法獲取 Activity 實例:

在 Fragment 中,可以通過 getActivity() 方法獲取當前 Fragment 所依附的 Activity 實例。然后可以調用 Activity 的公共方法或者直接訪問 Activity 的字段來獲取數據。

// 在 Fragment 中獲取 Activity 中的數據示例
if (getActivity() != null) {MyActivity activity = (MyActivity) getActivity();String data = activity.getData();// 使用獲取到的數據
}

2.通過回調接口傳遞數據:

定義一個接口,在 Fragment 中實現該接口,并在 Activity 中設置接口的回調,這樣可以實現 Fragment 向 Activity 傳遞數據的雙向通信。

步驟如下:

在 Fragment 中定義一個接口:

public interface OnDataReceivedListener {void onDataReceived(String data);
}

在 Fragment 中保存接口的實例,并在合適的時機調用接口方法傳遞數據:

private OnDataReceivedListener listener;@Override
public void onAttach(@NonNull Context context) {super.onAttach(context);if (context instanceof OnDataReceivedListener) {listener = (OnDataReceivedListener) context;} else {throw new RuntimeException(context.toString()+ " must implement OnDataReceivedListener");}
}// 在合適的時機調用接口方法傳遞數據
if (listener != null) {listener.onDataReceived(data);
}

在 Activity 中實現接口:

public class MyActivity extends AppCompatActivity implements MyFragment.OnDataReceivedListener {@Overridepublic void onDataReceived(String data) {// 處理從 Fragment 傳遞過來的數據}
}

3.通過 ViewModel 共享數據:

使用 ViewModel 來管理數據,Fragment 和 Activity 都可以通過獲取同一個 ViewModel 實例來共享數據。這種方法適用于需要在 Fragment 和 Activity 之間共享大量數據的情況。

在 Activity 中創建 ViewModel:

MyViewModel viewModel = new ViewModelProvider(this).get(MyViewModel.class);

在 Fragment 中獲取相同的 ViewModel 實例:

MyViewModel viewModel = new ViewModelProvider(requireActivity()).get(MyViewModel.class);

通過 ViewModel 共享數據:

// 在 Activity 或者 Fragment 中設置和獲取 ViewModel 中的數據
viewModel.setData(data);
String data = viewModel.getData();

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44570.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44570.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44570.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手慢無,速看︱PMO大會內部學習資料

全國PMO專業人士年度盛會 每屆PMO大會,組委會都把所有演講嘉賓的PPT印刷在了會刊里面,供大家會后回顧與深入學習。 第十三屆中國PMO大會-會刊 《2024第十三屆中國PMO大會-會刊》 (內含演講PPT) 會刊:750個頁碼&…

代碼隨想錄-DAY④-鏈表——leetcode 24 | 19 | 142

24 思路 如果 pre 的后面沒有節點或者只有一個節點,則沒有更多的節點需要交換, 否則,通過更新節點的指針關系交換 pre 后面的兩個節點, 最后,返回新的鏈表的頭節點 dummyhead->next。 時間復雜度:O(n) 空間復雜…

buuctf面具下的flag

細節: 這道題可能因為是vmdk的原因 導致在window上 7z無法得到全部的信息 所以最后解壓要在linux系統上 解密網站 Brainfuck/Ook! Obfuscation/Encoding [splitbrain.org] 這道題010打開,可以發現里面隱藏了很多 binwalk解壓 兩個文件 vmdk可以直接 用7z解壓 7z x flag.…

Mysql如何高效ALTER TABL

ALTER TABLE 缺點 MySQL 的ALTER TABLE 操作的性能對大表來說是個大問題。 MySQL MySQL 執行大部分修改表結構操作的方法是用新結構的 創建一個,空表從舊表中查出所有數據插入,新表然后刪除舊。表這樣操作可能需要花費很長,時間 如內果存不…

Flutter TabBar與TabBarView聯動及獲取當前點擊欄目索引

TabBar還有TabBarView都是谷歌flutter官方組件庫——Material組件庫提供的組件,其中TabBar用于導航切換,TabBarView則是配合其切換顯示的對應的視圖,官網參考地址:TabBarView class - material library - Dart API。 實現一體聯動…

輕松搭建RAG:澳鵬RAG開發工具

我們很高興地宣布推出RAG開發工具,這是澳鵬大模型智能開發平臺的一項新功能。此功能可幫助團隊輕松創建高質量的檢索增強生成 (RAG) 模型。 什么是 RAG? 檢索增強生成 (RAG) 通過利用大量外部數據源(例如企業的知識庫)顯著增強了…

文獻閱讀(1)——深度強化學習求解車輛路徑問題的研究綜述

doi: 10.3778/j.issn.1002-8331.2210-0153 深度強化學習求解車輛路徑問題的研究綜述 (ceaj.org) 組合最優化問題( combinatorial optimization problem, COP ) 日常生活中常見的 COP 問題有旅行商問題(traveling sale…

數字化轉型領航者:佑美科技塑造智能健康新生態

在全球數字化轉型的浪潮中,佑美專注于智能健康解決方案的創新,正以其卓越的技術實力和前瞻性的戰略眼光,引領著智能穿戴設備和健身器械行業的未來趨勢。佑美科技不僅深耕數字化轉型,更在多個領域獲得了國家級和省級的權威認可,彰顯了其在智能健康領域的影響力。 智能穿戴設備正…

[數據結構] 基于選擇的排序 選擇排序堆排序

標題:[數據結構] 基于選擇的排序 選擇排序&&堆排序 水墨不寫bug (圖片來源于網絡) 目錄 (一)選擇排序 實現:(默認從小到大排序) 優化后實現方法: (二)堆排序…

【Java】垃圾回收學習筆記(二):分代假說與垃圾回收算法

文章目錄 0. 分代收集理論分代假說分代GC定義 1. 垃圾回收算法1.1 標記清除(Mark-Sweep)算法優點缺點 1.2 標記復制算法優點缺點為什么是8:1:1? 1.3 標記整理算法優點缺點 2. 是否移動?Reference 0. 分代收集理論 分代假說 現在…

Navicat和MySQL的安裝

1、下載 Navicat Navicat 官網:www.navicat.com.cn/ 在產品中可以看到很多的產品,點擊免費試用 Navicat Premium 即可,是一套多連數據庫開發工具,其他的只能連接單一類型數據庫 點擊試用 選擇系統直接下載 二、安裝 Navicat 安…

代碼江湖:Python 中的進程與線程

大家好,我是闊升。今天,咱們來聊聊 Python 中的兩個"老熟人"——進程和線程。這兩個概念可以說是 Python 多任務編程中的"雙子星",既相似又不同,讓不少小伙伴們頭疼不已。不過別擔心,今天我們就來…

element el-table實現表格動態增加/刪除/編輯表格行,帶校驗規則

本篇文章記錄el-table增加一行可編輯的數據列,進行增刪改。 1.增加空白行 直接在頁面mounted時對form里面的table列表增加一行數據,直接使用push() 方法增加一列數據這個時候也可以設置一些默認值。比如案例里面的 產品件數 。 mounted() {this.$nextTi…

latex 使用 thanks 首頁空白 問題

寫IEEE journal的時候遇到的問題……用latex寫了\thanks,編譯的論文第一頁是空的,這是因為\thanks要在\author內部,然后再用\maketitle,即\author{… \thanks{}}。這樣的話詳細信息就會出現在論文首頁的左下角 另外,\…

linux創建定時任務

crontab方式 先查看是否有cron systemctl status crond 沒有的話就安裝 yum install cronie 打開你的crontab文件進行編輯。使用以下命令打開當前用戶的crontab文件: crontab -e * * * * * /export/test.sh >> /export/test.log 2>&1/export/test.s…

差分算法中的F 和CR參數

自查使用。。F 類似梯度的大小 兩者都用于種群中新個體的生成

leetcode--從中序與后序遍歷序列構造二叉樹

leeocode地址:從中序與后序遍歷序列構造二叉樹 給定兩個整數數組 inorder 和 postorder ,其中 inorder 是二叉樹的中序遍歷, postorder 是同一棵樹的后序遍歷,請你構造并返回這顆 二叉樹 。 示例 1: 輸入:inorder …

Unity插件 Unitask學習日志

Unity插件 Unitask學習日志 下載地址 https://github.com/Cysharp/UniTask點擊這里可以查閱中文文檔 在Unity 2020,2021 中使用UPM下載會找不到,可以使用2022版本的unity可以在upm中找到。 安裝方式: 下載zip之后解壓, 復制Plugins 到Uni…

uniapp小程序使用webview 嵌套 vue 項目

uniapp小程序使用webview 嵌套 vue 項目 小程序中發送 <web-view :src"urlSrc" message"handleMessage"></web-view>export default {data() {return {urlSrc: "",};},onLoad(options) {// 我需要的參數比較多 所以比較臃腫// 獲取…

01. 數組篇(進行中......)

一. 前綴和技巧 &#xff08;1&#xff09;前綴和 前綴和技巧適用于快速、頻繁地計算一個索引區間內的元素之和。 class NumArray { public:vector<int> preSum; //前綴和數組NumArray(vector<int>& nums) {//preSum[0] 0&#xff0c;便于計算累加和preSum…