android - asyntask 片段上的适配器错误
问题描述
recyclerView.setAdapter(adapter);
在以下方法的行的 logcat 中显示错误
protected void onPostExecute(String s) {
mDialog.dismiss();
rssObject = new Gson().fromJson(s,RSSObject.class);
FeedAdapter adapter = new
FeedAdapter(rssObject,getActivity());
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
错误日志猫
NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)' on a null object reference
at tona.dousting.org.ftlog4.Fragments.RSSFragment$1.onPostExecute(RSSFragment.java:98)
at tona.dousting.org.ftlog4.Fragments.RSSFragment$1.onPostExecute(RSSFragment.java:75)
查看此类中的所有代码
package tona.dousting.org.ftlog4.Fragments;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import tona.dousting.org.ftlog4.MainActivity;
import tona.dousting.org.ftlog4.R;
import tona.dousting.org.ftlog4.RSSPackages.Adapter.FeedAdapter;
import tona.dousting.org.ftlog4.RSSPackages.Common.HTTPDataHandler;
import tona.dousting.org.ftlog4.RSSPackages.Model.RSSObject;
import com.google.gson.Gson;
/**
* A simple {@link Fragment} subclass.
*/
public class RSSFragment extends Fragment {
Toolbar toolbar;
RecyclerView recyclerView;
RSSObject rssObject;
public RSSFragment() {
// Required empty public constructor
}
//RSS link
private final String RSS_link="http://rss.nytimes.com/services/xml/rss/nyt/Science.xml";
private final String RSS_to_Json_API = "https://api.rss2json.com/v1/api.json?rss_url=";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_rss, container, false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
//for crate home button
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
//toolbar.setTitle("News");
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// 1. get a reference to recyclerView
//recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
// 2. set layoutManger
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
// recyclerView.setLayoutManager(linearLayoutManager);
loadRSS();
return view;
}
private void loadRSS() {
AsyncTask<String,String,String> loadRSSAsync = new AsyncTask<String, String, String>() {
ProgressDialog mDialog = new ProgressDialog(getActivity());
@Override
protected void onPreExecute() {
mDialog.setMessage("Please wait...");
mDialog.show();
}
@Override
protected String doInBackground(String... params) {
String result;
HTTPDataHandler http = new HTTPDataHandler();
result = http.GetHTTPData(params[0]);
return result;
}
@Override
protected void onPostExecute(String s) {
mDialog.dismiss();
rssObject = new Gson().fromJson(s,RSSObject.class);
FeedAdapter adapter = new FeedAdapter(rssObject,getActivity());
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
};
StringBuilder url_get_data = new StringBuilder(RSS_to_Json_API);
url_get_data.append(RSS_link);
loadRSSAsync.execute(url_get_data.toString());
}
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.menu_refresh)
loadRSS();
return true;
}
}
解决方案
推荐阅读
- xml - Saxon EE 10.3 XSLT 错误:无法创建其父节点是文档节点的属性节点 (id)
- docker - 无法在 Powershell 命令中创建 DockerFile
- java - 为集群项目生成随机坐标
- python - 基于具有多行的第二个列表附加到列表 python
- c++ - 将类对象初始化为错误类型
- javascript - jQuery 代码仅适用于第一个元素
- c++ - 为什么我不能 static_cast char* 到 std::byte*?
- python - numpy在排序数组中找到最后一个小于值的索引?
- python-3.x - Python 类无法正常工作“名称错误”
- sql - 引用 CTE 表的排名/案例陈述