推 corkcork: shared viewmodel 03/20 17:11
感謝
不過這個和viewmodel不同是新東西啊?
→ ketrobo: 你會有這種問題是對於class和instance觀念不清楚, andr 03/20 20:35
→ ketrobo: oid提供的Activity和Fragment都是class,執行時會系統會 03/20 20:35
→ ketrobo: 製造出Activity和Fragment相對應的instance…然後new I 03/20 20:35
→ ketrobo: ntent (activity, Activity.class)這個方式傳遞參數,其 03/20 20:35
→ ketrobo: 實預設的行為是產生一個Activity的新的instance,將Inte 03/20 20:35
→ ketrobo: nt的資料傳給這個新的instance,所以會讓你有錯覺只剩下 03/20 20:35
→ ketrobo: 最後選擇的的資料…若Fragment的instance,要傳資料給Ac 03/20 20:35
→ ketrobo: tivity 的instance,可以透過getActivity()和轉型配合處 03/20 20:35
→ ketrobo: 理…方法不只一種,但是前置的知識基礎都是要求你能夠理 03/20 20:35
→ ketrobo: 解class和其instance之間的關係 03/20 20:35
推 ketrobo: o種基礎概念如果不清楚,上網找找教學影片仔細看看,解釋 03/20 20:40
→ ketrobo: 起來要敲很多文字配合圖片才能有一個模糊的輪廓 03/20 20:40
感謝。
class還稍微了解,但instance這個我真的不太了解,和Java的實作好像又不一樣
嗯,所以我應該去從Java書中找嗎?
請問如果要找教學影片的話,class and instance這個就是關鍵字嗎?
推 LPH66: class→類別, instance→實體, 都是物件導向語言的基本觀念 03/22 01:05
→ LPH66: 這個觀念你去找任何一本講 Java 的書幾乎都會談 03/22 01:06
→ kobe8112: 本版老ID了其實 03/22 01:14
→ LZN: button跟buttonsheet不是都在同個fragment? 不需要用intent吧 03/22 10:39
推 ohmylove347: 如果是BottomSheetDialogFragment的話那就是另一個獨 03/22 19:10
→ ohmylove347: 立的Fragment了 03/22 19:10
我看了一下自己的java入門書
好像只有提到方法的instance,它沒有說和Activity、Fragment的關係
雖然努力看著教學範例做,但好像做出來是一知半解
我也有一本Android書&到圖書館借書,但剛好都沒有我所需要的知識
不知道有沒有推薦能詳細說明及範例的Android書啊?
推 ohmylove347: 我是上一學期的課後自學的耶哈哈哈,然後現在用的方 03/24 01:25
→ ohmylove347: 法很亂老師說根本亂搞哈哈哈。前幾篇有位資深的大大 03/24 01:25
→ ohmylove347: 有出書喔,你要不要買那本看看?哪位大大資歷有十年 03/24 01:25
→ ohmylove347: 了超猛 03/24 01:25
其實我也有看到這本書
只是我java其實並沒有學很深,而Kotlin更是沒用過
不知道自己的程度看不看得懂
但我會考慮購入,感謝推薦!
推 ohmylove347: 我也是純java目前,Java底子也不好所以學得頗累,到 03/24 20:25
→ ohmylove347: 目前的心得感覺是用Android練Java哈哈 03/24 20:25
不過其實越用後,有些地方又會回去看java書的基礎在自己試著執行一次
如果是那本書,不知道裡面有沒有說明我現在的問題?
推 pinefruit: 你的流程是在同個 activity 內溝通,不需要 intent。 03/25 02:15
→ pinefruit: 把 intent 拿掉後可以避免二樓 K 大提到的問題。 03/25 02:16
推 pinefruit: 然後我覺得.. 你可以先鎖定一個已知的方法, 03/25 02:18
→ pinefruit: 例如文章內你提到單例,單例肯定能解決這問題的, 03/25 02:18
→ pinefruit: 就用單例 + listener 來完成跨 fragment 的溝通吧! 03/25 02:20
→ pinefruit: 等到單例成功後,再來研究更複雜的 ViewModel 即可。 03/25 02:21
感謝。
您是說單例的getInstance傳遞資料嗎?
那它的getter和setter各該放在哪個地方呢?(activity、Fragment、bottom sheet?)
我有試了一下,只有第一次資料有傳過去,第二次後的資料結果還是都停在第一次
而您說的listener是指Button的的OnClick listener這個嗎?
我是把OnClick用Switch來分別處理按鈕按下時的動作
問題是最後Button裡的文字沒辦法變化,另外Bottom sheet沒辦法在按下按鈕後消失
※ 編輯: MAXQb (111.243.0.112 臺灣), 03/25/2021 16:34:38
推 pinefruit: listener 泛指一種監聽資料變化或事件的實作模式, 03/25 17:59
→ pinefruit: 搜尋 java listener 即可找到許多解說及範例。 03/25 18:00
推 pinefruit: 以下試著說明在你的問題中,各元件的角色及溝通流程。 03/25 18:12
→ pinefruit: 首先 fragment 及 bottom sheet 都可以呼叫單例的 03/25 18:12
→ pinefruit: getInstance() 取得"同一個"單例的實體。 03/25 18:13
→ pinefruit: 當 bottom sheet 按完選項後,可呼叫單例的 setData () 03/25 18:13
→ pinefruit: 之類的方法將資料傳入。 03/25 18:14
→ pinefruit: 而 fragment 則是 listener,負責監聽單例的資料變化。 03/25 18:14
→ pinefruit: 當單例的 data 被改變時,將呼叫 listener 上的方法, 03/25 18:16
→ pinefruit: 例如 onDataChanged(),來通知 fragment 資料改變了, 03/25 18:16
→ pinefruit: 這時 fragment 就能取得新資料來改變畫面上的文字了。 03/25 18:17
→ pinefruit: ※最後補充,bottom sheet 可呼叫 dismiss() 來關閉。 03/25 18:27
我大概知道您的意思了,只是目前我要再多想想要怎麼寫
才能把監聽單例的資料、onDataChanged()及畫面做結合
感謝!
※ 編輯: MAXQb (111.243.0.112 臺灣), 03/25/2021 23:32:11