Android Studio获取通知图标并将其设置为Recyclerview时发生错误

我正在尝试从外部应用程序(如Facebook,Gmail等)生成的通知中获取提名信息。 我成功获取了通知的内容和标题,并且还将该内容和标题链接到了Main activity上的Recyclerview中。 但是,当我尝试获取通知的应用程序图标时,收到一条错误消息,显示'java.lang.NullPointerException:尝试调用虚拟方法'android.content.pm.PackageManager com.example.noticrawler.Mainactivity。

上的空对象引用上的getPackageManager()'
Drawable icon = ac.getPackageManager().getapplicationIcon(data.getPkg_name());
holder.icon.setImageDrawable(icon);

请帮助我解决这个问题。


所有代码行

package com.example.noticrawler;

import android.app.activity;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

    private activity activity;
    private List<App> app;
    public Mainactivity ac;

    public RecyclerViewAdapter(activity activity,List<App> person) {
        this.activity = activity;
        this.app = person;
    }


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

    public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
        View view = LayoutInflater.from(parent.getcontext()).inflate(R.layout.item,parent,false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }


    @Override
    public void onBindViewHolder(final ViewHolder holder,final int position) {

        App data = app.get(position);

        // binding Data
        holder.notiTitle.setText(data.getNotiTitle());
        holder.notiText.setText(data.getNotiText());


        try{
            Drawable icon = ac.getPackageManager().getapplicationIcon(data.getPkg_name());
            holder.icon.setImageDrawable(icon);


        }
        catch (PackageManager.NameNotFoundException e)
        {

        }




    }

    private void removeItemView(int position) {
        app.remove(position);
        notifyItemRemoved(position);
        notifyItemRangeChanged(position,app.size()); 
    }

    class ViewHolder extends RecyclerView.ViewHolder {
        TextView notiTitle;
        TextView notiText;
        ImageView icon;

        public ViewHolder(View itemView) {
            super(itemView);
            notiTitle = (TextView) itemView.findViewById(R.id.notititle);
            notiText = (TextView) itemView.findViewById(R.id.notitext);
            icon = (ImageView) itemView.findViewById(R.id.app_icon);


            itemView.setOnClicklistener(new View.OnClicklistener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(activity,"click " +
                            app.get(getadapterPosition()).getNotiTitle(),Toast.LENGTH_SHORT).show();
                }
            });

            itemView.setOnLongClicklistener(new View.OnLongClicklistener() {
                @Override
                public boolean onLongClick(View view) {
                    Toast.makeText(activity,"remove " +
                            app.get(getadapterPosition()).getNotiTitle(),Toast.LENGTH_SHORT).show();
                    removeItemView(getadapterPosition());
                    return false;
                }
            });
        }
    }
}
fuyesunwang123 回答:Android Studio获取通知图标并将其设置为Recyclerview时发生错误

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3086346.html

大家都在问