简体   繁体   English

null 指针在 android 工作室 java 中的布局管理器异常

[英]null pointer Exeption for layout manager in android studio java

so in an Admin app, I want to add functionality to delete images(gallery) from the firebase database and storage so I made a layout for that and set the functionality but for the layout manager I am getting Runtime Error所以在一个管理应用程序中,我想添加从 firebase 数据库和存储中删除图像(图库)的功能,所以我为此做了一个布局并设置了功能,但是对于布局管理器,我得到了运行时错误

here are the logs这是日志

 java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference
     at com.jkstudio.collageadmin.gallery.Gallery_list$3.onDataChange(Gallery_list.java:129)
     at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
     at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
     at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
     at android.os.Handler.handleCallback(Handler.java:883)
     at android.os.Handler.dispatchMessage(Handler.java:100)
     at android.os.Looper.loop(Looper.java:224)
     at android.app.ActivityThread.main(ActivityThread.java:7590)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

the Gallery adapter package com.jkstudio.collageadmin.gallery;图库适配器 package com.jkstudio.collageadmin.gallery;

import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.jkstudio.collageadmin.FullImageView;
import com.jkstudio.collageadmin.R;


import java.util.List;


public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.galleryViewAdapter>
{


    private Context context;
    private List<GalleryData> list;
    private DatabaseReference Drefrance,DRef;
    private StorageReference Srafrance,SRef;

    public GalleryAdapter(Context context, List<GalleryData> list)
    {

        this.context = context;
        this.list = list;
    }

    @Override
    public galleryViewAdapter onCreateViewHolder(@NonNull  ViewGroup parent, int viewType)
    {
        View view = LayoutInflater.from(context).inflate(R.layout.gallrey_imageitem_layout,parent,false);
        return new galleryViewAdapter(view);
    }

    @Override
    public void onBindViewHolder(@NonNull  galleryViewAdapter holder, int position)
    {

        try {
            Glide.with(context).load(list.get(position)).into(holder.gallery_imageView);
            holder.gallery_imageView.setOnClickListener(v ->
            {
                Intent intent = new Intent(context, FullImageView.class);
                intent.putExtra("imageurl_pass",list.get(position).getDurl());
                context.startActivity(intent);
            });


        } catch (Exception e) {
            e.printStackTrace();

        }
        holder.deletebtn.setOnClickListener(v ->
        {
            AlertDialog.Builder dialog = new AlertDialog.Builder(context);
            dialog.setMessage("delete this Image ?");
            dialog.setCancelable(true);
            dialog.setPositiveButton("confirm", (dialog1, which) ->
            {
                Srafrance = FirebaseStorage.getInstance().getReference().child("Gallery");
                SRef=Srafrance.child(list.get(position).getSfilename());
                SRef.delete().addOnSuccessListener(unused ->
                {
                    Toast.makeText(context, "image delete-cloud", Toast.LENGTH_SHORT).show();
                }).addOnFailureListener(e ->
                {
                    Toast.makeText(context, "image delete-cloud failed", Toast.LENGTH_SHORT).show();

                })  ;



                Drefrance = FirebaseDatabase.getInstance().getReference().child("Gallery");
                DRef =  Drefrance.child(list.get(position).getCategory());
               DRef.removeValue()
                        .addOnCompleteListener(task ->
                        {
                            Toast.makeText(context, "Deleted", Toast.LENGTH_SHORT).show();
                        }).addOnFailureListener(e ->
                {
                    Toast.makeText(context, "Seometing went wrong -Srefrance-DN", Toast.LENGTH_SHORT).show();
                });
                try {
                    notifyItemRemoved(position);
                } catch (Exception e) {
                    e.printStackTrace();
                }



            });

            dialog.setNegativeButton("Cancle", (Idialog, which) ->
            {
                Idialog.cancel();

            });

            AlertDialog Adialog = null;
            try {
                Adialog = dialog.create();
            } catch (Exception e) {
                e.printStackTrace();
            }
            if(dialog != null)
            {
                dialog.show();
            }
        });

    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class galleryViewAdapter extends RecyclerView.ViewHolder
    {
        ImageView gallery_imageView;
        Button deletebtn;
        public galleryViewAdapter(@NonNull  View itemView)
        {
            super(itemView);
            gallery_imageView = itemView.findViewById(R.id.gallery_imageView);
            deletebtn = itemView.findViewById(R.id.gallery_delete_btn);

        }
    }

}

the Gallery_list where the recycler view is回收站视图所在的Gallery_list

package com.jkstudio.collageadmin.gallery;

import android.os.Bundle;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.jkstudio.collageadmin.R;

import java.util.ArrayList;

public class Gallery_list extends AppCompatActivity {
    RecyclerView gallery_recyclerview1;
    RecyclerView gallery_recyclerview2;
    RecyclerView gallery_recyclerview3;
    RecyclerView gallery_recyclerview4;
    RecyclerView gallery_recyclerview5;

    GalleryAdapter adapter;
    private DatabaseReference Drefrance, DbRef;
    ArrayList<GalleryData> list;


    @Override
    protected void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Drefrance = FirebaseDatabase.getInstance().getReference().child("Gallery");



        gallery_recyclerview1 = findViewById(R.id.gallery_recyclerview1);
        gallery_recyclerview2 = findViewById(R.id.gallery_recyclerview2);
        gallery_recyclerview3 = findViewById(R.id.gallery_recyclerview3);
        gallery_recyclerview4 = findViewById(R.id.gallery_recyclerview4);
        gallery_recyclerview5 = findViewById(R.id.gallery_recyclerview5);


        getCategory1();
        getCategory2();
        getCategory3();
        getCategory4();
        getCategory5();



    }


    private void getCategory1()
    {
        Drefrance.child("placement").addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull  DataSnapshot snapshot)
            {


                for (DataSnapshot Dsnapshot : snapshot.getChildren())
                {
                    GalleryData data = Dsnapshot.getValue(GalleryData.class);
                    list.add(data);
                }
                adapter = new GalleryAdapter(Gallery_list.this,list);
                gallery_recyclerview1.setLayoutManager(new GridLayoutManager(Gallery_list.this,3));
                gallery_recyclerview1.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull  DatabaseError error)
            {  Toast.makeText(Gallery_list.this,error.getMessage(), Toast.LENGTH_SHORT).show();

            }
        });

    }

    private void getCategory2()
    {
        Drefrance.child("events").addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull  DataSnapshot snapshot)
            {


                for (DataSnapshot Dsnapshot : snapshot.getChildren())
                {
                    GalleryData data = Dsnapshot.getValue(GalleryData.class);
                    list.add(data);
                }
                adapter = new GalleryAdapter(Gallery_list.this,list);
                gallery_recyclerview2.setLayoutManager(new GridLayoutManager(Gallery_list.this,3));
                gallery_recyclerview2.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull  DatabaseError error)
            {  Toast.makeText(Gallery_list.this,error.getMessage(), Toast.LENGTH_SHORT).show();

            }
        });

    }

    private void getCategory3()
    {
        Drefrance.child("festivals").addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull  DataSnapshot snapshot)
            {


                for (DataSnapshot Dsnapshot : snapshot.getChildren())
                {
                    GalleryData data = Dsnapshot.getValue(GalleryData.class);
                    list.add(data);
                }
                adapter = new GalleryAdapter(Gallery_list.this,list);
                gallery_recyclerview3.setLayoutManager(new GridLayoutManager(Gallery_list.this,3));
                gallery_recyclerview3.setAdapter(adapter);
            }



            @Override
            public void onCancelled(@NonNull  DatabaseError error)
            {  Toast.makeText(Gallery_list.this,error.getMessage(), Toast.LENGTH_SHORT).show();

            }
        });

    }

    private void getCategory4()
    {
        Drefrance.child("achivements").addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull  DataSnapshot snapshot)
            {

                for (DataSnapshot Dsnapshot : snapshot.getChildren())
                {
                    GalleryData data = Dsnapshot.getValue(GalleryData.class);
                    list.add(data);
                }
                adapter = new GalleryAdapter(Gallery_list.this,list);
                gallery_recyclerview4.setLayoutManager(new GridLayoutManager(Gallery_list.this,3));
                gallery_recyclerview4.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull  DatabaseError error)
            {  Toast.makeText(Gallery_list.this,error.getMessage(), Toast.LENGTH_SHORT).show();

            }
        });
    }

    private void getCategory5()
    {
        Drefrance.child("sports").addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot)
            {


                for (DataSnapshot Dsnapshot : snapshot.getChildren())
                {
                    GalleryData data = Dsnapshot.getValue(GalleryData.class);
                    list.add(data);
                }
                adapter = new GalleryAdapter(Gallery_list.this,list);
                gallery_recyclerview5.setLayoutManager(new GridLayoutManager(Gallery_list.this,3));
                gallery_recyclerview5.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error)
            {  Toast.makeText(Gallery_list.this,error.getMessage(), Toast.LENGTH_SHORT).show();

            }
        });
    }








}

xml file for gallery_list画廊列表的 xml 文件

 <?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:animationCache="true"
    tools:context=".gallery.Gallery_list">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="16dp"

        >

        <com.google.android.material.card.MaterialCardView
            android:layout_width="match_parent"
            android:layout_height="300dp"

            android:layout_marginVertical="8dp"

            >


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <TextView
                    android:id="@+id/gallery_category1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginTop="16dp"
                    android:fontFamily="@font/overpassbold"
                    android:text="placements"
                    android:textColor="#3f3b3b"
                    android:textSize="22dp"

                    />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginVertical="4dp"
                    android:background="#828080" />

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/gallery_recyclerview1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />


            </LinearLayout>


        </com.google.android.material.card.MaterialCardView>


        <com.google.android.material.card.MaterialCardView
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:layout_marginVertical="8dp"

            >


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <TextView
                    android:id="@+id/gallery_category2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginTop="16dp"
                    android:fontFamily="@font/overpassbold"
                    android:text="events"
                    android:textColor="#3f3b3b"
                    android:textSize="22dp"

                    />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginVertical="4dp"
                    android:background="#828080" />

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/gallery_recyclerview2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />


            </LinearLayout>


        </com.google.android.material.card.MaterialCardView>

        <com.google.android.material.card.MaterialCardView
            android:layout_width="match_parent"
            android:layout_height="300dp"

            android:layout_marginVertical="8dp"

            >


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <TextView
                    android:id="@+id/gallery_category3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginTop="16dp"
                    android:fontFamily="@font/overpassbold"
                    android:text="festivals"
                    android:textColor="#3f3b3b"
                    android:textSize="22dp"

                    />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginVertical="4dp"
                    android:background="#828080" />

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/gallery_recyclerview3"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />


            </LinearLayout>


        </com.google.android.material.card.MaterialCardView>

        <com.google.android.material.card.MaterialCardView
            android:layout_width="match_parent"
            android:layout_height="300dp"

            android:layout_marginVertical="8dp"

            >


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <TextView
                    android:id="@+id/gallery_category4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginTop="16dp"
                    android:fontFamily="@font/overpassbold"
                    android:text="Achivements"
                    android:textColor="#3f3b3b"
                    android:textSize="22dp"

                    />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginVertical="4dp"
                    android:background="#828080" />

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/gallery_recyclerview4"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />


            </LinearLayout>


        </com.google.android.material.card.MaterialCardView>

        <com.google.android.material.card.MaterialCardView
            android:layout_width="match_parent"
            android:layout_height="300dp"

            android:layout_marginVertical="8dp"

            >


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <TextView
                    android:id="@+id/gallery_category5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginTop="16dp"
                    android:fontFamily="@font/overpassbold"
                    android:text="Sports"
                    android:textColor="#3f3b3b"
                    android:textSize="22dp"

                    />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginVertical="4dp"
                    android:background="#828080" />

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/gallery_recyclerview5"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />


            </LinearLayout>


        </com.google.android.material.card.MaterialCardView>


    </LinearLayout>


</androidx.core.widget.NestedScrollView>

Xml of the Gallery Item layout画廊项目布局的 Xml

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/gallery_image_item_card"

>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="1dp"
    android:orientation="vertical"
    >

    <ImageView
        android:id="@+id/gallery_imageView"
        android:layout_width="wrap_content"
        android:layout_height="90dp"
        android:layout_gravity="center"
        android:scaleType="fitXY"


        app:srcCompat="@drawable/noimg" />
    <com.google.android.material.button.MaterialButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/gallery_delete_btn"
        android:text="delete"
        android:textSize="12dp"
         </LinearLayout>
  </com.google.android.material.card.MaterialCardView>

You are missing setContentView(R.layout.gallery_list);您缺少setContentView(R.layout.gallery_list); in the Gallery_list activity.Gallery_list活动中。 Add this after super.onCreate(savedInstanceState);super.onCreate(savedInstanceState);之后添加这个in oncreate of activity.在活动的创建中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM