Java 使用RecyclerView时应用程序崩溃
我一直在遵循一个通过RecyclerView在线下载、解析和显示JSON内容的示例。可在以下网址查阅: 当我在模拟器上运行应用程序时,我得到一个错误代码。我似乎无法解决这个问题,我也曾浏览过这个网站上的其他类似问题,但我一直无法解决我的问题 我得到的错误代码是:Java 使用RecyclerView时应用程序崩溃,java,android,json,parsing,android-recyclerview,Java,Android,Json,Parsing,Android Recyclerview,我一直在遵循一个通过RecyclerView在线下载、解析和显示JSON内容的示例。可在以下网址查阅: 当我在模拟器上运行应用程序时,我得到一个错误代码。我似乎无法解决这个问题,我也曾浏览过这个网站上的其他类似问题,但我一直无法解决我的问题 我得到的错误代码是: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapt
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)' on a null object reference
错误发生在JSONparzer类的第62行
这就是rv.setAdapter(新的MyAdapter(c,用户))
public类MainActivity扩展了AppCompatActivity{
字符串jsonURL=”http://jsonplaceholder.typicode.com/users";
公共静态最终字符串TAG=“MainActivity”;
//FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
私人回收车;
/*private ArrayList mLeagueTable=new ArrayList();//初始化m
私有TableAdapter mTableAdapter=新TableAdapter(mLeagueTable,this)*/
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
//设置支持操作栏(工具栏);
rv=(RecyclerView)findViewById(R.id.rv);
如果(rv!=null){
rv.setLayoutManager(新直线布局经理(本));
}
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);//初始化fab
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
新的JSONDownloader(MainActivity.this、jsonURL、rv).execute();
}
});
}
}
类JSONParzer扩展了AsyncTask{
私有上下文c;
私有字符串jsonData;
私人回收车;
私营部门;
private ArrayList users=new ArrayList();
公共JSONParzer(上下文c、字符串jsonData、循环视图rv){
这个.c=c;
this.jsonData=jsonData;
这个.rv=rv;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pd=新进度对话框(c);
pd.setTitle(“解析”);
pd.setMessage(“正在解析..请稍候”);
pd.show();
}
@凌驾
受保护的布尔doInBackground(Void…params){
返回parse();
}
@凌驾
受保护的void onPostExecute(布尔值isParsed){
super.onPostExecute(isParsed);
pd.disclose();//关闭进度对话框。
如果(isParsed)
{
//绑定(使用适配器)
setAdapter(新的MyAdapter(c,用户));//传入适配器的实例。
}否则
{
Toast.makeText(c,“无法解析并检查日志输出”,Toast.LENGTH_SHORT.show();
}
}
私有布尔解析()
{
试一试{
JSONArray ja=新JSONArray(jsonData);
JSONObject jo;//声明json对象
user.clear();
用户;
for(int i=0;i
错误发生在JSONParzer类的第62行
我也将包括下面的布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context=".UI.MainActivity"
tools:showIn="@layout/activity_main" >
content_main
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
主要内容
主要活动
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.oisin.premierleaguesocial.UI.MainActivity"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:id="@+id/test"
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/test"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/test"
android:clickable="true"
app:fabSize="mini"
app:srcCompat="@android:drawable/presence_online" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="?attr/colorPrimary"
android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</RelativeLayout>
任何帮助都将不胜感激。感谢您的时间。发生崩溃是因为android系统无法从“activity_main.xml”中找到回收器视图 请尝试添加以下代码“activity_main.xml”布局:
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
因此,更改后的布局类似于:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:id="@+id/test"
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/test"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/test"
android:clickable="true"
app:fabSize="mini"
app:srcCompat="@android:drawable/presence_online" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="?attr/colorPrimary"
android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<android.support.v7.widget.RecyclerView
android:layout_below="@+id/toolbar"
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
您的
活动\u main
XML中没有RecyclerView
,这会导致NullPointerException
将RecyclerView
添加到activity\u main
中,然后重试
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.oisin.premierleaguesocial.UI.MainActivity"
android:weightSum="1">
................
.........................
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
................
.........................
非常感谢您的帮助。这就解决了问题。我将该代码块添加到activity_main中,并且必须在content_main中包含它。所以现在我把它从content_main中去掉,现在只在activity_main中。很好用,不客气。如果它解决了您的问题,请将此标记为解决方案,以便帮助其他有类似问题的人。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.oisin.premierleaguesocial.UI.MainActivity"
android:weightSum="1">
................
.........................
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>