如何在主活动中从片段触发事件?

4

我有一个主活动,其中包含一个编辑框和一个通过两个片段充气的视图页。两个片段布局都包含按钮。我的问题是如何在主活动中触发它们的单击监听器。

比如我在一个片段中有一个按钮,应该使用可跨度字符串将我的编辑框文本变粗。如果所有这些都在我的主活动中,我可以实现它。但我的问题是如何在主活动中捕获此按钮的监听器?

2个回答

10

创建一个接口并将其实例传递给片段,当片段中的按钮被点击时调用该接口的方法,这样您将获得对活动的回调,然后您可以从那里更新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();
   }
}

我使用了一个自定义接口监听器,谢谢。 - Rahul Gupta

5
在你的碎片中,你可以使用((MainActivity)getActivity()).myMethod()来调用MainActivity的myMethod方法。这个解决方案假设你的碎片位于MainActivity中(getActivity必须返回MainActivity实例):-)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接