我有一个主活动,其中包含一个编辑框和一个通过两个片段充气的视图页。两个片段布局都包含按钮。我的问题是如何在主活动中触发它们的单击监听器。
比如我在一个片段中有一个按钮,应该使用可跨度字符串将我的编辑框文本变粗。如果所有这些都在我的主活动中,我可以实现它。但我的问题是如何在主活动中捕获此按钮的监听器?
我有一个主活动,其中包含一个编辑框和一个通过两个片段充气的视图页。两个片段布局都包含按钮。我的问题是如何在主活动中触发它们的单击监听器。
比如我在一个片段中有一个按钮,应该使用可跨度字符串将我的编辑框文本变粗。如果所有这些都在我的主活动中,我可以实现它。但我的问题是如何在主活动中捕获此按钮的监听器?
创建一个接口并将其实例传递给片段,当片段中的按钮被点击时调用该接口的方法,这样您将获得对活动的回调,然后您可以从那里更新UI。
例如:
public interface MyInterface {
public void buttonClicked();
}
public class Activity implements MyInterface {
@override
public void buttonClicked() {
//Change the UI
}
}
public class MyFragment extends Fragment {
MyInterface interface;
public void setInterface(MyInterface interface) {
this.interface = interface;
}
public void onClick(View v) {
interface.buttonClicked();
}
}
((MainActivity)getActivity()).myMethod()
来调用MainActivity的myMethod方法。这个解决方案假设你的碎片位于MainActivity中(getActivity必须返回MainActivity实例):-)。