AndroidDev 板


LINE

接下来是比较复杂的使用问题(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.8.190 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1616177347.A.DBB.html
1F:推 corkcork: shared viewmodel 03/20 17:11
感谢 不过这个和viewmodel不同是新东西啊?
2F:→ ketrobo: 你会有这种问题是对於class和instance观念不清楚, andr 03/20 20:35
3F:→ ketrobo: oid提供的Activity和Fragment都是class,执行时会系统会 03/20 20:35
4F:→ ketrobo: 制造出Activity和Fragment相对应的instance…然後new I 03/20 20:35
5F:→ ketrobo: ntent (activity, Activity.class)这个方式传递参数,其 03/20 20:35
6F:→ ketrobo: 实预设的行为是产生一个Activity的新的instance,将Inte 03/20 20:35
7F:→ ketrobo: nt的资料传给这个新的instance,所以会让你有错觉只剩下 03/20 20:35
8F:→ ketrobo: 最後选择的的资料…若Fragment的instance,要传资料给Ac 03/20 20:35
9F:→ ketrobo: tivity 的instance,可以透过getActivity()和转型配合处 03/20 20:35
10F:→ ketrobo: 理…方法不只一种,但是前置的知识基础都是要求你能够理 03/20 20:35
11F:→ ketrobo: 解class和其instance之间的关系 03/20 20:35
12F:推 ketrobo: o种基础概念如果不清楚,上网找找教学影片仔细看看,解释 03/20 20:40
13F:→ ketrobo: 起来要敲很多文字配合图片才能有一个模糊的轮廓 03/20 20:40
感谢。 class还稍微了解,但instance这个我真的不太了解,和Java的实作好像又不一样 嗯,所以我应该去从Java书中找吗? 请问如果要找教学影片的话,class and instance这个就是关键字吗?
14F:推 LPH66: class→类别, instance→实体, 都是物件导向语言的基本观念 03/22 01:05
15F:→ LPH66: 这个观念你去找任何一本讲 Java 的书几乎都会谈 03/22 01:06
16F:→ kobe8112: 本版老ID了其实 03/22 01:14
17F:→ LZN: button跟buttonsheet不是都在同个fragment? 不需要用intent吧 03/22 10:39
18F:推 ohmylove347: 如果是BottomSheetDialogFragment的话那就是另一个独 03/22 19:10
19F:→ ohmylove347: 立的Fragment了 03/22 19:10
我看了一下自己的java入门书 好像只有提到方法的instance,它没有说和Activity、Fragment的关系 虽然努力看着教学范例做,但好像做出来是一知半解 我也有一本Android书&到图书馆借书,但刚好都没有我所需要的知识 不知道有没有推荐能详细说明及范例的Android书啊?
20F:推 ohmylove347: 我是上一学期的课後自学的耶哈哈哈,然後现在用的方 03/24 01:25
21F:→ ohmylove347: 法很乱老师说根本乱搞哈哈哈。前几篇有位资深的大大 03/24 01:25
22F:→ ohmylove347: 有出书喔,你要不要买那本看看?哪位大大资历有十年 03/24 01:25
23F:→ ohmylove347: 了超猛 03/24 01:25
24F:推 ohmylove347: #1WHt3FEl 03/24 01:27
其实我也有看到这本书 只是我java其实并没有学很深,而Kotlin更是没用过 不知道自己的程度看不看得懂 但我会考虑购入,感谢推荐!
25F:推 ohmylove347: 我也是纯java目前,Java底子也不好所以学得颇累,到 03/24 20:25
26F:→ ohmylove347: 目前的心得感觉是用Android练Java哈哈 03/24 20:25
不过其实越用後,有些地方又会回去看java书的基础在自己试着执行一次 如果是那本书,不知道里面有没有说明我现在的问题?
27F:推 pinefruit: 你的流程是在同个 activity 内沟通,不需要 intent。 03/25 02:15
28F:→ pinefruit: 把 intent 拿掉後可以避免二楼 K 大提到的问题。 03/25 02:16
29F:推 pinefruit: 然後我觉得.. 你可以先锁定一个已知的方法, 03/25 02:18
30F:→ pinefruit: 例如文章内你提到单例,单例肯定能解决这问题的, 03/25 02:18
31F:→ pinefruit: 就用单例 + listener 来完成跨 fragment 的沟通吧! 03/25 02:20
32F:→ 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
33F:推 pinefruit: listener 泛指一种监听资料变化或事件的实作模式, 03/25 17:59
34F:→ pinefruit: 搜寻 java listener 即可找到许多解说及范例。 03/25 18:00
35F:推 pinefruit: 以下试着说明在你的问题中,各元件的角色及沟通流程。 03/25 18:12
36F:→ pinefruit: 首先 fragment 及 bottom sheet 都可以呼叫单例的 03/25 18:12
37F:→ pinefruit: getInstance() 取得"同一个"单例的实体。 03/25 18:13
38F:→ pinefruit: 当 bottom sheet 按完选项後,可呼叫单例的 setData () 03/25 18:13
39F:→ pinefruit: 之类的方法将资料传入。 03/25 18:14
40F:→ pinefruit: 而 fragment 则是 listener,负责监听单例的资料变化。 03/25 18:14
41F:→ pinefruit: 当单例的 data 被改变时,将呼叫 listener 上的方法, 03/25 18:16
42F:→ pinefruit: 例如 onDataChanged(),来通知 fragment 资料改变了, 03/25 18:16
43F:→ pinefruit: 这时 fragment 就能取得新资料来改变画面上的文字了。 03/25 18:17
44F:→ pinefruit: ※最後补充,bottom sheet 可呼叫 dismiss() 来关闭。 03/25 18:27
我大概知道您的意思了,只是目前我要再多想想要怎麽写 才能把监听单例的资料、onDataChanged()及画面做结合 感谢! ※ 编辑: MAXQb (111.243.0.112 台湾), 03/25/2021 23:32:11







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP