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的观点是,您可以在具有不同活动的不同上下文中重用它们.要实现这一点,并且仍然能够在您的活动中调用方法,在官方文档中推荐以下模式.
在你的片段中:
使用该方法定义公共接口
public interface MyFragmentCallback{
public void theMethod();
}
Run Code Online (Sandbox Code Playgroud)定义一个字段并获得一个演员参考:
private MyFragmentCallback callback;
public void onAttach(Activity activity){
callback = (MyFragmentCallback) activity
super.onAttach(activity);
}
Run Code Online (Sandbox Code Playgroud)在你的活动中
MyFragmentCallback在类定义.theMethod()在你的活动中实现(Eclipse会要求你这样做)然后,从你的片段,你可以打电话 callBack.theMethod()
这与在getActivity()上简单调用方法之间的区别在于,您的片段不再与此特定活动配对.因此,您可以将其与其他活动重复使用,例如一个用于手机,另一个用于平板电脑.
| 归档时间: |
|
| 查看次数: |
42774 次 |
| 最近记录: |