【问题标题】:getActivity() had returned null when isDetached() had returned false当 isDetached() 返回 false 时 getActivity() 返回 null
【发布时间】:2014-02-21 11:48:36
【问题描述】:

曾几何时,我的调试器在 Log.d 上遇到断点:

@Override
public void onDataChanged(DataTypeChanged dataType) {
    if (!isDetached()) {
        if(getActivity()==null){
            Log.d(CommonConstants.DEBUG_TAG, "Yes, it is null.");
        }
        List<WeekViewCoreTask> tasks = DataProvider
                .getWeekViewCoreTasks(getActivity().getApplicationContext());

        mWeekView.setTasks(tasks);
    }
}

我认为这永远不会发生。这是怎么发生的:当 isDetached() 返回 false 时 getActivity() 返回 null?

【问题讨论】:

  • 嗨,谢尔盖,您从 Activity 或 Fragment 扩展了您的应用程序。请告诉我。如果您从 Activity 扩展您的应用程序,则意味着您将调用 getBaseActivity() 而不是 getActivity().getApplicationContext()。如果您从 Fragment 扩展您的应用程序,则意味着您将使用 getActivity() 而不是 getActivity().getApplicationContext()。希望它对你有帮助。谢谢

标签: android android-activity fragment


【解决方案1】:

对此不是 100% 确定,但根据 Android 文档,isDetached() 仅在 Fragment 已明确与其Activity 分离时才会返回 true。不过,Fragment 的父 Activity 可能为空还有其他几个原因。最好改为调用isAdded 来检查Fragment 当前是否附加到其Activity

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 2013-12-29
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多