Udit Pandya
Udit Pandya

Reputation: 91

How to pass context for an intent from a method of a class?

Error : java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference at com.adriitsolutions.prarthana.AdapterForListView.MyRequestForBloodRequirementListRecyclerView$1.onClick(MyRequestForBloodRequirementListRecyclerView.java:153) at android.view.View.performClick(View.java:6935) Here is my code.

java ((myViewHolderForRecyclerViewOfMenu) viewHolder).iv_my_request_view.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { // showLeadDetails(position); context.startActivity(new Intent( context , ViewDonorListActivity.class)); Log.e("ONCLICK", "View Request"); } });



Adapter :  @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {



        holder.sendAt.setText(mData.get(position).getSendAt());
        holder.radius.setText(mData.get(position).getRadius());
        holder.acceptedStatus.setText(mData.get(position).getAcceptedStatus());

        holder.requestBloodGrpType.setImageResource(mData.get( position ).getRequestBloodGrpType() );
        //holder.requestUrgenyType.setImageResource( mData.get( position ).getRequestUrgencyType() );

        holder.viewRequest.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mContext.startActivity(new Intent(mContext,ViewDonorListActivity.class));
            }
        } );

       /* holder.buttonView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mContext.startActivity(new Intent(mContext,ViewDonorListActivity.class));
            }
        });*/

    }

Upvotes: 2

Views: 1460

Answers (3)

Roman
Roman

Reputation: 2733

Simply use context from itemView of ViewHolder -

Solution

Context context = holder.itemView.getContext();
context.startActivity(new Intent(context,ViewDonorListActivity.class));

Upvotes: 2

Udit Pandya
Udit Pandya

Reputation: 91

i made an edit like this in my main activity :

   public static Context mContext;

public static Context getContext() {
    return mContext;
}

and later using this context i was able to pass an intent to call another activity !

Intent intent = new Intent( MyRequestActivity.getContext() , ViewDonorListActivity.class );
                        MyRequestActivity.getContext().startActivity( intent );

Upvotes: -1

Salar Arabpour
Salar Arabpour

Reputation: 520

you should post your full adapter class, cause we should see where do you initialize mContext.but by default you can get context by constructor method of adapter.

something like:

private List<Obj> list;
private Context mContext;

public AdapterRvBid(List<Obj> list, Context mContext) {
    this.list = list;
    this.mContext= mContext;
}

Upvotes: 0

Related Questions