从活动中更改片段的变量值
Posted
技术标签:
【中文标题】从活动中更改片段的变量值【英文标题】:Changing variable's value of fragment from the activity 【发布时间】:2019-05-15 10:29:49 【问题描述】:我有这样的活动:
工具栏上有2个按钮A和B,还有一个框架供片段接管。假设我在片段中有一个名为 button_type
的字符串变量。
我想要一个系统,当我点击activity中的按钮A时,片段中的button_type设置为A,当我点击activity中的按钮B时,片段中的button_type设置为B。 这个怎么做?
请注意,当片段已经处于活动状态时,我可能会单击按钮(A,B)(不像我单击一个按钮后片段会出现。)
提前致谢。
编辑: 目前我正在尝试这个:
在 MainActivity 我得到类似的字符串button_type
并根据按钮单击将其设置为 A 或 B 并使用方法:
public String getData()return button_type;
在片段中我使用:button_type= activity.getData();
in onViewCreated。
但是好像只有A和B的初始设定值(也就是A),并且当另一个按钮时不会改变被点击。
【问题讨论】:
你有你的片段实例。因此,为两个片段中的集合数据创建公共方法,并使用特定片段的实例使用该方法。 请详细说明。我尝试使用公共方法,但它不起作用。所以我需要一个详细的解释来找出我做错的地方。 显示方法你是怎么做到的? 请检查已编辑的问题。 【参考方案1】:我认为最好的方法是使用interface
来管理片段中的文本。片段将实现接口。当按钮点击时,调用fragment中实现的函数。
另一种方法是使用findFragmentByTag()
或findFragmentById()
创建片段对象,然后在片段中调用处理文本的函数。
【讨论】:
我明白了。给我一个赞!【参考方案2】:使用方法onClickA(String buttonType)
和onClickB(String buttonType)
创建一个interface
。
然后创建一个实现这个接口的对象(或者让fragment自己实现这个接口)。我将调用此对象侦听器。
在侦听器方法实现中调用setButtonType(String buttonType)
。
然后将您的侦听器传递给活动(您可以使用getActivity()
在片段中获取父活动的实例并将其转换为您的活动类)并在按钮A(在活动中)的onClickListener 中调用listener.onClickA(yourString)
并对按钮执行相同的操作B.
【讨论】:
小提示而不是getActivity()
你可以使用requireActivity()
也只有一种方法可以通过检查参数的值来处理两个点击。以上是关于从活动中更改片段的变量值的主要内容,如果未能解决你的问题,请参考以下文章
在本机 C++ 中将变量从 C# 编组为 void*,并在本机程序内更改 Managed/C# 中的变量值