Java 使用RecyclerView时应用程序崩溃

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

我一直在遵循一个通过RecyclerView在线下载、解析和显示JSON内容的示例。可在以下网址查阅:

当我在模拟器上运行应用程序时,我得到一个错误代码。我似乎无法解决这个问题,我也曾浏览过这个网站上的其他类似问题,但我一直无法解决我的问题

我得到的错误代码是:

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>