使用getActivity()进行转换是否安全? [英] Is it safe to cast with getActivity()?

查看:41
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆