使用getActivity()进行转换是否安全? [英] Is it safe to cast with getActivity()?
问题描述
我正在编写一个具有父 Activity
和几个子 Fragments
的应用.我正在尝试获取片段以与父活动进行通信.我知道有几种方法可以做到这一点,包括制作一个接口并在父Activity中实现它.但是,我对这种方法感兴趣:
I'm writing an app that has a parent Activity
and several child Fragments
. I am trying to get the Fragment to communicate back to the parent Activity. I know there are several ways to do this, including making an interface and implementing that in the parent Activity. However, I am interested in this method:
ParentActivity activity = (ParentActivity) getActivity();
activity.someMethod();
这种方法所需的代码更少,复杂度也更低.但是,此强制转换在生产代码中安全吗?还是界面更安全?
This approach takes less code and is less complex. However, is this cast safe to do in production code? Or is an interface safer?
推荐答案
您可以使用此-
private ParentActivity callback;
@Override
public void onAttach(Activity activity)
{
//callback = (ParentActivity ) activity;
// make sure there is no cast exception
callback = (ParentActivty.class.isAssignableFrom(activity
.getClass())) ? (ParentActivity) activity : null;
super.onAttach(activity);
}
@Override
public void onDetach()
{
callback = null;
super.onDetach();
}
现在,当您进行任何方法调用时,都应像这样调用它-
now when you do any method call , call it like this -
if(callback!=null)
{
callback.someMethod();
}
此方法很安全.
这篇关于使用getActivity()进行转换是否安全?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!