【问题标题】:How to fire event from fragment in main activity?如何从主要活动中的片段触发事件?
【发布时间】:2013-11-21 12:11:22
【问题描述】:
我有一个主 Activity,它有一个编辑文本和一个通过两个片段膨胀的 viewpager。两个片段布局都包含按钮。我的问题是如何在主要活动中触发他们的点击监听器。
就像我在一个片段中有一个按钮,它应该使用可扩展字符串更改我的 edittext 粗体中的文本。如果所有这些都在我的主要活动中,我可以实现它。我的问题是如何在主要活动中捕获此按钮的侦听器?
【问题讨论】:
标签:
android
android-fragments
android-viewpager
【解决方案1】:
创建一个接口并将实例传递给片段,当从片段中单击按钮时调用接口的方法,这样您将获得对活动的回调,然后您可以从那里更新您的 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();
}
}
【解决方案2】:
在你的片段中,你可以使用
((MainActivity)getActivity()).myMethod()
调用MainActivity的myMethod。此解决方案假定您的片段位于 MainActivity(getActivity 必须返回 MainActivity 实例):-)