从活动中获取片段内的按钮

Posted

技术标签:

【中文标题】从活动中获取片段内的按钮【英文标题】:get a button within a fragment from the activity 【发布时间】:2014-06-28 20:34:33 【问题描述】:

我该怎么做?或者甚至有可能从activity 获得fragment 中的button

我尝试了很多东西,例如试图获取片段的视图或容器,但没有运气。

我这样做是因为我在 activity 中有 27 个 fragments,它们都有相同的 button。我不想在每个片段上做一个按钮侦听器,而是想大大减少我的代码,但只是在我的activity 中循环遍历每个片段并设置按钮以在按下时激活按钮侦听器(在活动中)。

一旦我知道如何获取button 并将其设置为按钮listener,我就可以轻松地自己进行循环。

我刚刚完成计算机科学的第一年,并且已经使用 Java 编码已有几年了。

提前致谢!

【问题讨论】:

【参考方案1】:

不要循环或获取对按钮的引用。

只需让您的活动实现 OnClickListener 并将其设置为所有片段中按钮的点击侦听器.. 在片段中

yourBtn.setOnClickListener(((YourActivityType) getActivity()));

另一个没有implements关键字的解决方案

就是在你的activity中有一个公共方法,例如setButtonAction(Button btn)

public void setButtonAction(Button btn) 
     btn.setOnClickListener(myClickListener);

并将 myClickListener 声明为 youractivity 中的变量

同样的想法,无需您的活动来实现 clickLitener

【讨论】:

...没有工具有没有办法做到这一点? 改了一点,我做了: ((GameActivity)getActivity()).setButtonAction(view.findViewById(R.id.button1));在片段和活动中我做了: public void setButtonAction(View view) Button btn = (Button) view; btn.setOnClickListener(onButtonClick); 您在将按钮传递给 setButtonAction 时已经查找过按钮,您不必在方法中再次使用 findViewById

以上是关于从活动中获取片段内的按钮的主要内容,如果未能解决你的问题,请参考以下文章

片段内的按钮

Kotlin:片段内的按钮需要在开始活动之前单击两次。如何一键启动活动?

将活动回调发送到片段

如何从片段获取数据到另一个活动? (不是容器活动)[重复]

Android:从片段调用时如何从活动中获取返回结果?

如何从“活动”中的“编辑”文本中获取值并将其用于片段?