当isDetached()返回false时,getActivity()返回null

时间:2014-01-29 15:12:00

标签: android android-activity fragment

曾几何时我的调试器在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);
    }
}

getActivity() returns null when isDetached() returns false

我以为这永远不会发生。如何发生这种情况:当isDetached()返回false时,getActivity()返回null?

1 个答案:

答案 0 :(得分:7)

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