作者MAXQb ()
看板AndroidDev
标题Re: [问题]为何BottomSheet和Fragment之间传资料??
时间Sun Mar 28 00:02:00 2021
那个,先谢谢各位,之前各位的建议我都有参考范例及试作
刚好网路上有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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1616860924.A.CF6.html
1F:→ daniel098962: 看起来你没透过livedata的postValue把资料传递出去 03/29 17:44
2F:→ daniel098962: 不过我没用过livedata 仅用过Rx 但概念应该差不多 03/29 17:44
3F:→ daniel098962: 另外你的情况应该不用再宣告新的myViewModel2 03/29 17:44
了解,虽然还是搞不懂,只好研究中。
※ 编辑: MAXQb (111.243.11.115 台湾), 03/31/2021 17:55:02
4F:→ daniel098962: 或是方便提供你的专案吗 直接利用你的程式码改改看 03/31 22:43