我知道这个问题已被提出,但我找不到任何解决方案。
这是事情:
- 我有一个Activity
,它有三个标签。
- 每个标签都是Fragment
。
- 使用FragmentSatePagerAdapter
来管理整个事情
当我滑到最后一个标签时,我想向服务器发送请求,并在收到ListView
的情况下填充Json
。听起来很简单。
我有一个扩展AsyncTask的类,我用它来处理对服务器的请求
public class HttpAsyncNotif extends AsyncTask<String, Void, JSONArray>{
private TabOperations tabOperationsCaller; // This is my fragment
public HttpAsyncNotif(TabOperations caller){
this.tabOperationsCaller = caller;
}
// Others methods of Asynctask
}
这是我片段的代码(这是最后一个标签)
public class TabOperations extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_tab_operations, container, false);
return rootView;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
new HttpAsyncNotif(this).execute(user.getUsername()); // Got the NullPointerException
}
}
}
我在片段的生命周期中查看了细节,但我仍然没有解决方案。
我该怎么做?
非常感谢提前!
答案 0 :(得分:3)
更改
new HttpAsyncNotif(this).execute(user.getUsername());
到
new HttpAsyncNotif(getActivity()).execute(user.getUsername());
使用Context
Fragment
中获取getActivity()
还要在user!=null
user.getUsername()
答案 1 :(得分:1)
问题在于您已通过Context
。将代码更改为
new HttpAsyncNotif(getActivity()).execute(user.getUsername());