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