- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Fragments 和 RecyclerView 构建一个应用程序。
我正在关注本教程:THIS TUTORIAL
我正在使用教程的构建消息 fragment 部分来执行此操作。
但我收到此错误:
08-17 10:21:51.674 32646-32646/zca.zcaimobile E/AndroidRuntime: FATAL EXCEPTION: main
Process: zca.zcaimobile, PID: 32646
java.lang.RuntimeException: Unable to start activity ComponentInfo{zca.zcaimobile/zca.zcaimobile.activities.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference
at zca.zcaimobile.fragments.PaymentFragment.onViewCreated(PaymentFragment.java:43)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1127)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:604)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1244)
at android.app.Activity.performStart(Activity.java:6116)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2478)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
我的PaymentFragment.java
package zca.zcaimobile.fragments;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import zca.zcaimobile.R;
import zca.zcaimobile.api.APIService;
import zca.zcaimobile.api.APIUrl;
import zca.zcaimobile.helper.PaymentAdapter;
import zca.zcaimobile.helper.SharedPrefManager;
import zca.zcaimobile.models.Payments;
public class PaymentFragment extends Fragment {
private RecyclerView recyclerViewMessages;
private RecyclerView.Adapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_messages, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getActivity().setTitle("Messages");
recyclerViewMessages = (RecyclerView) view.findViewById(R.id.recyclerViewMessages);
recyclerViewMessages.setHasFixedSize(true);
recyclerViewMessages.setLayoutManager(new LinearLayoutManager(getActivity()));
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(APIUrl.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
APIService service = retrofit.create(APIService.class);
Call<Payments> call = service.getPayments(SharedPrefManager.getInstance(getActivity()).getUser().getId());
call.enqueue(new Callback<Payments>() {
@Override
public void onResponse(Call<Payments> call, Response<Payments> response) {
adapter = new PaymentAdapter(response.body().getMessages(), getActivity());
recyclerViewMessages.setAdapter(adapter);
}
@Override
public void onFailure(Call<Payments> call, Throwable t) {
Toast.makeText(getActivity(), t.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
}
我的fragment_ payment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerViewMessages"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
我使用该教程的 MessageFragment 部分作为我的 PaymentFragment.java 的引用,因为该部分和我的 paymentfragment 具有相同的功能。
有人可以帮助我吗?我是 Android 编程新手,所以我真的不知道发生了什么。
谢谢。
最佳答案
这是因为您的布局名称 fragment_ payment.xml
而不是 R.layout.fragment_messages
。 LayoutInflater在fragment_messages.xml
中找不到recyclerview
更改此:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_payment, container, false);
}
关于java - 使用 RecyclerView 并调用 android.support.v7.widget.RecyclerView.setHasFixedSize(boolean) 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45725766/
事情是这样的:有人知道 setHasFixedSize 方法吗?有人说,如果所有项目的大小相同,它就允许优化,并且在 android.support.v7.widget 的 RecyclerView
当我运行应用程序并转到用户的 Activity 时,应用程序崩溃,显示 mUsersList.setHasFixedSize(true);导致应用程序崩溃。 这是消息“由 java.lang.Null
我在理解 setHasFixedSize() 时遇到了一些问题。我知道当 RecyclerView 的大小没有改变时,它用于优化,来自文档。 那是什么意思?在最常见的情况下,ListView 几乎总是
我已经阅读了 Android 开发者信息和一些 SO 帖子和 RecyclerView 文章。我仍然不清楚我是否可以使用: recyclerView.setHasFixedSize(true); 我的
大家好,我正在尝试从 Firebase 数据库进行实时搜索并显示数据,但每次都会收到以下错误,我不明白如何修复它。谁能帮我解决它吗?我是 Android 新手,不明白发生了什么。如果有人能向我建议我应
我想知道这两种方法在做什么?我试图在我的 RecyclerView 上设置它,但它似乎没有做任何事情。 有什么想法吗? 最佳答案 setLayoutFrozen(true) 阻止对 UI 的任何更新,
我是 RecyclerView 的新手,如果分辨率很简单,请原谅我。我四处寻找但没有运气,所以我需要指导。使用 Firestore 从 https://github.com/firebase/Fire
我正在使用 Fragments 和 RecyclerView 构建一个应用程序。 我正在关注本教程:THIS TUTORIAL 我正在使用教程的构建消息 fragment 部分来执行此操作。 但我收到
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 4 年前。 当我尝试运行我的代码时,它给我一
我是一名优秀的程序员,十分优秀!