Home » Android » Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)

Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)

Posted by: admin May 14, 2020 Leave a comment

Questions:

i want to ask, why my code doesnt work when running on device, but when i run on emulator android like a Genymotion, it’s working perfectly..

someone said on this link like this : you cannot call methods on the Activity superclass until after super.onCreate(), except in certain situations. Please postpone your initialization of promptsView until after super.onCreate() has been called.

i still dont get it, please tell me if you have the same problems..

anyway , i’m sorry if my explanation is bad..

public class DestinationListAdapter extends ArrayAdapter<DestinationModel> {

    Context context;
    int layoutResourceId;
    List<DestinationModel> data = Collections.emptyList();

    public DestinationListAdapter(Context context, int layoutResourceId, List<DestinationModel> data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View row = convertView;
        DestinationHolder holder = null;

        if(row == null)
        {
            // Predicted Error At Line Below
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new DestinationHolder();
            holder.destination_id = (TextView) row.findViewById(R.id.destination_id);
            holder.destination_name = (TextView) row.findViewById(R.id.destination_name);

            row.setTag(holder);
        }
        else
        {
            holder = (DestinationHolder)row.getTag();
        }

        DestinationModel weather = data.get(position);
        holder.destination_id.setText(weather.getDestination_id());
        holder.destination_name.setText(weather.getDestination_name());

        return row;
    }
How to&Answers:

for make sure when return back & continuing previous activity
i just Added & checking for getContext()!=null

Here’s an good example :

Before block

adapter = new ExampleAdapter(getContext());
adapter.setData(items);
listView.setAdapter(adapter);

And better replace for getActivity()!=null

For example:

if (getActivity()!=null){
    adapter = new ExampleAdapter(getActivity());
    adapter.setData(items);
    listView.setAdapter(adapter);
}

I think this is solved all problem which got the same error like my problems !

Answer:

Actually this issue come when something comes as null byte.
and when we are using recycler view then it comes mostly. Because most people confuse in onCreateView of RecyclerViewAdpater.
Some code writers write Layout inflater as the layout of Tab. but here we will use another layout where we will mention our internal Recyclerview layout.

view= LayoutInflater.from(mcontext).inflate(R.layout.**item_tab14**,parent,false);

Answer:

Be conscious of where in the lifecycle you are. The value of getContext() may not be available yet.

For example, in a DialogFragment, the context will not be available until onCreateDialog() is called. So don’t try and create an adapter in the constructor, because the context will still be null at that point.