【发布时间】:2016-09-28 03:20:45
【问题描述】:
因为所有片段一起加载在 Pager 滑动选项卡中,我需要使用setUserVisibleHint() 来加载所选片段。
我在setUserVisibleHint() 方法中遇到了上下文问题:
当我将getActivity 用于我的上下文时,它引发了NPE Exception。谢谢
【问题讨论】:
标签: android android-fragments material-design
因为所有片段一起加载在 Pager 滑动选项卡中,我需要使用setUserVisibleHint() 来加载所选片段。
我在setUserVisibleHint() 方法中遇到了上下文问题:
当我将getActivity 用于我的上下文时,它引发了NPE Exception。谢谢
【问题讨论】:
标签: android android-fragments material-design
因为 getActivity 会在片段 attached 之前返回 null 到 Activity 你需要检查这个值是否为 null 或检查片段附加到 Activity 或之后 onActivityActtached函数。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getActivity() != null) {
//do something
}
}
//or
boolean isAttached = false;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
isAttached = true;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isAttached) {
//do something
}
}
【讨论】:
最好使用 newInstance 方法并将您的字符串放在那里。然后在片段中使用
getArguments().getString("KEY")
【讨论】: