My App Crashes When I click button that redirect to another website in recycleview adapter from firebase

Viewed 59

My App Crashes When I click the button that redirects to another website in recycle view adapter from firebase.

when I click on button app crashes by throwing error Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference.

null object exception when trying to start a new activity

Here is my Logcat error

D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.bestbookpricecomparison, PID: 2858
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference
    at com.example.bestbookpricecomparison.Adapter.BookImagesAdapter$1.onClick(BookImagesAdapter.java:41)
    at android.view.View.performClick(View.java:7448)
    at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
    at android.view.View.performClickInternal(View.java:7425)
    at android.view.View.access$3600(View.java:810)
    at android.view.View$PerformClick.run(View.java:28305)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

RecycleView Adapter code error occurs here

public class BookImagesAdapter extends FirebaseRecyclerAdapter<BookImagesModel, BookImagesAdapter.ImagesViewHolder> { private Context context;

public BookImagesAdapter(@NonNull FirebaseRecyclerOptions<BookImagesModel> options, Context context) {
    super(options);
    this.context = context;
}


@Override
protected void onBindViewHolder(@NonNull ImagesViewHolder holder, int position, @NonNull BookImagesModel model) {

    Glide.with(holder.Image.getContext()).load(model.getImage()).into(holder.Image);
    holder.Amazon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(model.getAmazon()));
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        
        }
    });
   
}

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

public class ImagesViewHolder extends RecyclerView.ViewHolder{
    private ImageView Image;
    private Button Flipkart, Amazon;

    public ImagesViewHolder(@NonNull View itemView) {
        super(itemView);

        Image = (ImageView) itemView.findViewById(R.id.IVImages);
        Flipkart = (Button) itemView.findViewById(R.id.btnFlipkart);
        Amazon = (Button) itemView.findViewById(R.id.btnAmazon);
    }


}

}

Model Class

public class BookImagesModel {
private String Image, Flipkart, Amazon;

BookImagesModel() {

}

public BookImagesModel(String image, String flipkart, String amazon) {
    Image = image;
    Flipkart = flipkart;
    Amazon = amazon;
}

public String getImage() {
    return Image;
}

public void setImage(String image) {
    Image = image;
}

public String getFlipkart() {
    return Flipkart;
}

public void setFlipkart(String flipkart) {
    Flipkart = flipkart;
}

public String getAmazon() {
    return Amazon;
}

public void setAmazon(String amazon) {
    Amazon = amazon;
}

}

Activity code

public class BookImages extends AppCompatActivity {
private RecyclerView BookImagesRV;
private BookImagesAdapter ImagesAdapter;

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

    BookImagesRV = (RecyclerView) findViewById(R.id.BookImagesRV);
    BookImagesRV.setLayoutManager(new LinearLayoutManager(this));

    FirebaseRecyclerOptions<BookImagesModel> imagesoptions =
            new FirebaseRecyclerOptions.Builder<BookImagesModel>()
                    .setQuery(FirebaseDatabase.getInstance().getReference().child("BookImages"), BookImagesModel.class)
                    .build();
    ImagesAdapter = new BookImagesAdapter(imagesoptions,this);
    BookImagesRV.setAdapter(ImagesAdapter);



}
@Override
protected void onStart() {
    super.onStart();
    ImagesAdapter.startListening();
}
@Override
protected void onStop() {
    super.onStop();
    ImagesAdapter.stopListening();
}

}

0 Answers
Related