【问题标题】:What context Should be Use in setUserVisibleHint Method在 setUserVisibleHint 方法中应该使用什么上下文
【发布时间】:2016-09-28 03:20:45
【问题描述】:

因为所有片段一起加载在 Pager 滑动选项卡中,我需要使用setUserVisibleHint() 来加载所选片段。 我在setUserVisibleHint() 方法中遇到了上下文问题: 当我将getActivity 用于我的上下文时,它引发了NPE Exception。谢谢

【问题讨论】:

    标签: android android-fragments material-design


    【解决方案1】:

    因为 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
        }
    } 
    

    【讨论】:

    • 如果 getActivity 返回 null 我应该如何防止这种情况发生?
    • 你应该等待或任何不使用活动的东西,因为片段没有活动
    【解决方案2】:

    最好使用 newInstance 方法并将您的字符串放在那里。然后在片段中使用

    getArguments().getString("KEY")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2021-12-18
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多