看板 AndroidDev 關於我們 聯絡資訊
那個,先謝謝各位,之前各位的建議我都有參考範例及試作 剛好網路上有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
daniel098962: 看起來你沒透過livedata的postValue把資料傳遞出去 03/29 17:44
daniel098962: 不過我沒用過livedata 僅用過Rx 但概念應該差不多 03/29 17:44
daniel098962: 另外你的情況應該不用再宣告新的myViewModel2 03/29 17:44
了解,雖然還是搞不懂,只好研究中。 ※ 編輯: MAXQb (111.243.11.115 臺灣), 03/31/2021 17:55:02
daniel098962: 或是方便提供你的專案嗎 直接利用你的程式碼改改看 03/31 22:43