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

时间:2013-11-21 12:11:23

标签: android android-fragments android-viewpager

我有一个主活动有一个edittext和一个viewpager,它通过两个片段膨胀。片段布局都包含按钮。我的问题是如何在主要活动中触发他们的点击监听器。

就像我在一个片段中有一个按钮,它应该使用spannable string更改我的edittext粗体中的文本。如果所有这些都在我的主要活动中,我可以实现它。我的问题是如何在主要活动中捕获此按钮的监听器?

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:4)

在您的片段中,您可以使用

((MainActivity)getActivity()).myMethod()

调用MainActivity的myMethod。此解决方案假设您的片段位于MainActivity中(getActivity必须返回MainActivity实例): - )