【发布时间】:2018-01-15 09:02:09
【问题描述】:
嗨,我有一个 viewPager,上面有一些列表,列表数据来自服务器,当我几次更改页面时,这个错误就出现了,这是我到目前为止的代码 这里错误
01-15 12:11:48.512 9508-9508/app.mma.introsliderproject E/AndroidRuntime: FATAL EXCEPTION: main
Process: app.mma.introsliderproject, PID: 9508
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' on a null object reference
at app.mma.PokerInfo.lastWorldNews.LastWorldNewsFragment$4.onResponse(LastWorldNewsFragment.java:122)
at app.mma.PokerInfo.lastWorldNews.LastWorldNewsFragment$4.onResponse(LastWorldNewsFragment.java:117)
我的 viewPager setOffScreenLimit 是 4,而我的 Pager Pages 是 7 这是 LastWorldNews 片段
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_last_world_news,container,false);
prepareData();
mListView = (ListView) view.findViewById(R.id.list_world_news);
pb = (ProgressBar) view.findViewById(R.id.progresslastnews);
refresh = (SwipeRefreshLayout) view.findViewById(R.id.refresh_news);
btn = (Button) view.findViewById(R.id.btn_retry_last_news);
tv = (AppCompatTextView) view.findViewById(R.id.tv_last_news);
ConnectivityInit(HIDE);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (CheckInternet.isOnline(getContext())){
((MainActivity)getActivity()).getUrl("lastWorldNews");
ConnectivityInit(HIDE);
pb.setVisibility(View.VISIBLE);
prepareData();
}
}
});
refresh.setColorSchemeColors(
R.color.material_green_200,
R.color.material_green_400,
R.color.material_green_600,
R.color.material_green_800
);
refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
prepareData();
refresh.setRefreshing(false);
}
});
private void prepareData() {
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
LastWolrdNewsParser parser = new LastWolrdNewsParser();
ArrayList<LastWorldNews> news = parser.ParseJson(response);
LastWorldNewsAdapter adapter = new LastWorldNewsAdapter(getActivity().getApplicationContext(),
R.layout.last_world_news_list_item,news);
pb.setVisibility(View.GONE);
if (mListView.getVisibility() == View.INVISIBLE || mListView.getVisibility()==View.GONE){
mListView.setVisibility(View.VISIBLE);
}
mListView.setAdapter(adapter);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pb.setVisibility(View.GONE);
}
});
RequestQueue quew = Volley.newRequestQueue(getActivity().getApplicationContext());
quew.add(request);
}
@Override
public void onPause() {
super.onPause();
if (request != null){
request.cancel();
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (request != null){
request.cancel();
}
}
} 我想将 pageoffScreenLimit 更改为 6,但我想知道有没有更好的方法?而 onDestroy 和 onPause 方法是标准方式吗?
【问题讨论】:
标签: android android-fragments android-volley