【问题标题】:Null pointer exception with app shutting down [duplicate]应用程序关闭时出现空指针异常[重复]
【发布时间】:2019-08-22 16:42:17
【问题描述】:

我知道之前有人问过这个问题,但我的代码在应用补丁后仍然无法正常工作。 当我触摸 fetch 按钮时,它崩溃并显示错误

java.lang.NullPointerException: Attempt to invoke virtual method 'androidx.recyclerview.widget.RecyclerView$Adapter androidx.recyclerview.widget.RecyclerView.getAdapter()' on a null object reference
    at com.example.csitcms.myrecyclerviewActivity$1.onChildAdded(myrecyclerviewActivity.java:35)'

代码最后一行显示如下错误:

public class myrecyclerviewActivity extends AppCompatActivity {
    RecyclerView recyclerView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_recycler_view);

        DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReference();
        databaseReference.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                String filename= dataSnapshot.getKey();
                String url= dataSnapshot.getValue(String.class);

                ((MyAdapter)recyclerView.getAdapter()).update(filename,url);
            }

【问题讨论】:

  • 先生,请帮我完成最后一行,我可以在代码中添加什么以使获取按钮不会崩溃??
  • 你在哪里实例化recyclerView?即recyclerView = /* something goes here */;
  • 在 MyAdapter 类中,代码如下: { RecyclerView recyclerview;上下文上下文; ArrayList items= new ArrayList(); ArrayList urls= new ArrayList();
  • 数组列表也被“代码是多余的或在此之后不再使用”的消息模糊了。
  • 对象(非 intiazlied)的类实例或变量默认始终为空,在您的情况下,recyclerView 为空,在 setContentView 之后,您需要将值分配给此 recyclerView 并使用您的 id 映射您在 XML 布局 my_recycler_view 中定义的。

标签: java android firebase firebase-realtime-database


【解决方案1】:

RecylerView 永远不会被初始化。您需要在onCreate() 中的某个地方recyclerView = findViewById(R.id.theIdOfYourRecyclerView)(但在setContentView 之后)。

另外,将theIdOfYourRecyclerView 替换为您的 RecyclerView 的 ID。

【讨论】:

  • 我在 oncreate 方法中初始化了 recyclerView,但应用程序仍然崩溃。调试器显示第 35 行: ((MyAdapter)recyclerView.getAdapter()).update(filename,url);更新已显示为黄色。
  • 你是怎么初始化的? @Alicexane
  • 像这样: public class myrecyclerviewActivity extends AppCompatActivity { RecyclerView recyclerView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_recycler_view); recyclerView=findViewById(R.id.recyclerview);
  • 错误是什么@Alicexane
猜你喜欢
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多