从片段内部调用活动方法

And*_*ner 16 android android-fragments android-activity android-fragmentactivity

我试图从Fragment屏幕调用一个方法中的方法.

我有一个名为myMethod()的方法,它位于一个名为MyActivity的活动中; 我有一个名为Screen1Fragment的片段.

我想从Screen1Fragment中调用MyActivity.myMethod(),但我不知道该怎么做.

以前Screen1Fragment是一个活动,因此我扩展了MyActivity,以便我可以直接调用myMethod().但我不得不将活动更改为片段以滑动标签使用.

提前致谢.

Sip*_*pka 40

getActivity()在你的片段中使用.

MyActivity activity = (MyActivity) getActivity();
activity.myMethod();
Run Code Online (Sandbox Code Playgroud)

如果你不确定你的片段是否附加到MyActivity那么

 Activity activity = getActivity();
 if(activity instanceof MyActivity){
      MyActivity myactivity = (MyActivity) activity;
      myactivity.myMethod();
 }
Run Code Online (Sandbox Code Playgroud)


zna*_*nat 25

你应该让你的片段完全独立于你附加它的活动.Fragments的观点是,您可以在具有不同活动的不同上下文中重用它们.要实现这一点,并且仍然能够在您的活动中调用方法,在官方文档中推荐以下模式.

在你的片段中:

在你的活动中

  • 实现MyFragmentCallback在类定义.
  • theMethod()在你的活动中实现(Eclipse会要求你这样做)

然后,从你的片段,你可以打电话 callBack.theMethod()

这与在getActivity()上简单调用方法之间的区别在于,您的片段不再与此特定活动配对.因此,您可以将其与其他活动重复使用,例如一个用于手机,另一个用于平板电脑.