Re: [問題]為何BottomSheet和Fragment之間傳資料?-2

看板AndroidDev作者時間3年前 (2021/03/28 00:02), 3年前編輯推噓0(004)
留言4則, 1人參與, 3年前最新討論串1/2 (看更多)
那個,先謝謝各位,之前各位的建議我都有參考範例及試作 剛好網路上有Viewmodel+livedata教學,所以我就自己試+更改程式碼才沒有弄出錯誤 (Java的範例不太好找,現在多是Kotlin的...) 但傳資料和監聽還是有些問題,目標和上次是一樣的 沒有錯誤的同時資料也沒有變化Orz... 以下是顯示畫面和程式碼等 顯示畫面 https://i.imgur.com/ta9jpvz.png
單例 https://i.imgur.com/YtKWA46.png
Fragment https://i.imgur.com/1qxe818.png
BottomSheet https://i.imgur.com/SLz3kpB.png
https://i.imgur.com/nSlJSxa.png
Viewmodel https://i.imgur.com/TyBfwNX.png
我本來是想: button.set();<-只能自己寫方法去myViewModel.size_data()拿到資料放進去 但是它報錯 如果寫myViewModel.getCurrentName().getValue()拿到資料放進去 結果是沒有變化 試了半天還是想不到哪裡有錯,只好再來請教各位 再次謝謝各位 ※ 引述《MAXQb ()》之銘言: : 接下來是比較複雜的使用問題(Java寫法)。 : 如圖所示: : https://i.imgur.com/jKs2g5t.png
: 首先 : 1.有1個Activity : 2.Activity裡有3個能滑動換頁面的Fragment(Viewpager2)及TabLayout : 3.Fragment裡有N個Button,ex:Button1、Button2等 : 4.按下Button後畫面底部會出現bottom_sheet出來 : 5.bottom_sheet裡面預計有Button、ImageButton、SeekBar等項目 : 6.項目選擇完後,資料會傳回Button1那呈現選擇結果 : 之後重複3.~6.直到選擇完 : 這期間Button1、Button2呈現的選擇結果資料都能維持在畫面上 : --------------------------------------------------------- : 問題是: : 當我想把BottomSheet的選擇結果傳回到Fragment裡的Button1呈現出來 : Intent卻是要這樣寫,Intent intent=new Intent(getActivity(),Activity.class); : 資料才傳的過去 : 而不是Intent intent=new Intent(getActivity(),Fragment.class); : 而且用getInstance()單例也沒辦法在兩個Fragment間set、get資料結果 : 這也因此沒辦法用ViewModel來維持選擇結果在畫面上,只要下一個按鈕選擇完後,畫面 : 整體就會更新 : ex:Button2選擇完後,本來顯示在Button1的結果還是會消失,只留下Button2的選擇結果 : 為何BottomSheet和Fragment之間的關係會是這樣呢? : 請問正確寫法or更好的寫法,該怎麼寫才對? : 有沒有最簡單的範例可看啊? : 謝謝各位的解答了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.11.253 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1616860924.A.CF6.html

03/29 17:44, 3年前 , 1F
看起來你沒透過livedata的postValue把資料傳遞出去
03/29 17:44, 1F

03/29 17:44, 3年前 , 2F
不過我沒用過livedata 僅用過Rx 但概念應該差不多
03/29 17:44, 2F

03/29 17:44, 3年前 , 3F
另外你的情況應該不用再宣告新的myViewModel2
03/29 17:44, 3F
了解,雖然還是搞不懂,只好研究中。 ※ 編輯: MAXQb (111.243.11.115 臺灣), 03/31/2021 17:55:02

03/31 22:43, 3年前 , 4F
或是方便提供你的專案嗎 直接利用你的程式碼改改看
03/31 22:43, 4F
文章代碼(AID): #1WNrRyps (AndroidDev)
文章代碼(AID): #1WNrRyps (AndroidDev)