Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从firebase检索图像时出错_Java_Android_Database_Firebase Realtime Database_Firebase Storage - Fatal编程技术网

Java 从firebase检索图像时出错

Java 从firebase检索图像时出错,java,android,database,firebase-realtime-database,firebase-storage,Java,Android,Database,Firebase Realtime Database,Firebase Storage,从应用程序中删除图像时出现此错误 E/InputEventReceiver:异常调度输入事件。 E/MessageQueue JNI:MessageQueue回调中的异常: HandlerReceiveCallback E/MessageQueue JNI: java.lang.IllegalArgumentException:无法创建存储Uri 解析 这是我的代码,我写它是为了删除 Images\u activity.java: public class Images_Avctivity ex

从应用程序中删除图像时出现此错误

E/InputEventReceiver:异常调度输入事件。 E/MessageQueue JNI:MessageQueue回调中的异常: HandlerReceiveCallback E/MessageQueue JNI: java.lang.IllegalArgumentException:无法创建存储Uri 解析

这是我的代码,我写它是为了删除

Images\u activity.java:

public class Images_Avctivity extends AppCompatActivity implements Image_adapter.OnItemClickListener {
    private RecyclerView mRecyclerView;
    private Image_adapter mAdapter;

    private ProgressBar mProgressCircle;

    private FirebaseStorage mStorage;
    private DatabaseReference mDatabaseRef;
    private ValueEventListener mDBListener;

    private List<Upload> mUploads;

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

        mRecyclerView = findViewById(R.id.recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        mProgressCircle = findViewById(R.id.progress_circle);

        mUploads = new ArrayList<>();

        mAdapter = new Image_adapter(Images_Avctivity.this, mUploads);

        mRecyclerView.setAdapter(mAdapter);

        mAdapter.setOnItemClickListener(Images_Avctivity.this);

        mStorage = FirebaseStorage.getInstance();
        mDatabaseRef = FirebaseDatabase.getInstance().getReference("uploads");

        mDBListener = mDatabaseRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                mUploads.clear();

                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                    Upload upload = postSnapshot.getValue(Upload.class);
                    upload.setKey(postSnapshot.getKey());
                    mUploads.add(upload);
                }

                mAdapter.notifyDataSetChanged();

                mProgressCircle.setVisibility(View.INVISIBLE);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(Images_Avctivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                mProgressCircle.setVisibility(View.INVISIBLE);
            }
        });
    }

    @Override
    public void onItemClick(int position) {
        Toast.makeText(this, "Normal click at position: " + position, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onWhatEverClick(int position) {
        Toast.makeText(this, "Whatever click at position: " + position, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDeleteClick(int position) {
        Upload selectedItem = mUploads.get(position);
        final String selectedKey = selectedItem.getKey();

        StorageReference imageRef = mStorage.getReferenceFromUrl(selectedItem.getImageUrl());
        imageRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                mDatabaseRef.child(selectedKey).removeValue();
                Toast.makeText(Images_Avctivity.this, "Item deleted", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mDatabaseRef.removeEventListener(mDBListener);
    }
}
 public class Image_adapter extends RecyclerView.Adapter<Image_adapter.ImageViewHolder> {

        private Context mContext;
        private List<Upload> mUploads;
        private OnItemClickListener mListener;

        public Image_adapter(Context context, List<Upload> uploads) {
            mContext = context;
            mUploads = uploads;
        }

        @Override
        public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(mContext).inflate(R.layout.image_item, parent, false);
            return new ImageViewHolder(v);
        }

        @Override
        public void onBindViewHolder(ImageViewHolder holder, int position) {
            Upload uploadCurrent = mUploads.get(position);
            holder.textViewName.setText(uploadCurrent.getName());
            Picasso.with(mContext)
                    .load(uploadCurrent.getImageUrl())
                    .placeholder(R.mipmap.ic_launcher)
                    .fit()
                    .centerCrop()
                    .into(holder.imageView);
        }

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

        public class ImageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,
                View.OnCreateContextMenuListener, MenuItem.OnMenuItemClickListener {
            public TextView textViewName;
            public ImageView imageView;

            public ImageViewHolder(View itemView) {
                super(itemView);

                textViewName = itemView.findViewById(R.id.text_view_name);
                imageView = itemView.findViewById(R.id.image_view_upload);

                itemView.setOnClickListener(this);
                itemView.setOnCreateContextMenuListener(this);
            }

            @Override
            public void onClick(View v) {
                if (mListener != null) {
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION) {
                        mListener.onItemClick(position);
                    }
                }
            }

            @Override
            public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
                menu.setHeaderTitle("Select Action");
                MenuItem doWhatever = menu.add(Menu.NONE, 1, 1, "Do whatever");
                MenuItem delete = menu.add(Menu.NONE, 2, 2, "Delete");

                doWhatever.setOnMenuItemClickListener(this);
                delete.setOnMenuItemClickListener(this);
            }

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                if (mListener != null) {
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION) {

                        switch (item.getItemId()) {
                            case 1:
                                mListener.onWhatEverClick(position);
                                return true;
                            case 2:
                                mListener.onDeleteClick(position);
                                return true;
                        }
                    }
                }
                return false;
            }
        }

        public interface OnItemClickListener {
            void onItemClick(int position);

            void onWhatEverClick(int position);

            void onDeleteClick(int position);
        }

        public void setOnItemClickListener(OnItemClickListener listener) {
            mListener = listener;
        }
    }
public class Images\u avactivity扩展AppCompativity实现Images\u adapter.OnItemClickListener{
私人回收视图mRecyclerView;
专用镜像适配器mAdapter;
私人ProgressBar mProgressCircle;
私有火基存储;
私有数据库引用mDatabaseRef;
私人价值事件监听器mDBListener;
私人列表多路复用器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u images\u avactivity);
mRecyclerView=findviewbyd(R.id.recycler\u视图);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(新的LinearLayoutManager(this));
mProgressCircle=findviewbyd(R.id.progress\u circle);
mUploads=newarraylist();
mAdapter=新映像适配器(Images\u avactivity.this,mulploads);
mRecyclerView.setAdapter(mAdapter);
setOnItemClickListener(Images\u avactivity.this);
mStorage=FirebaseStorage.getInstance();
mDatabaseRef=FirebaseDatabase.getInstance().getReference(“上载”);
mDBListener=mDatabaseRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
mUploads.clear();
对于(DataSnapshot postSnapshot:DataSnapshot.getChildren()){
Upload Upload=postSnapshot.getValue(Upload.class);
upload.setKey(postsnashot.getKey());
添加(上传);
}
mAdapter.notifyDataSetChanged();
mProgressCircle.setVisibility(视图.不可见);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Toast.makeText(Images\u avactivity.this,databaseError.getMessage(),Toast.LENGTH\u SHORT.show();
mProgressCircle.setVisibility(视图.不可见);
}
});
}
@凌驾
公共空间单击(内部位置){
Toast.makeText(这是“正常单击位置:”+位置,Toast.LENGTH_SHORT).show();
}
@凌驾
在任何鼠标右键(int位置)上的公共无效{
Toast.makeText(这是“在位置处单击任何内容:”+位置,Toast.LENGTH_SHORT).show();
}
@凌驾
公共位置单击(内部位置){
上传selectedItem=mUploads.get(位置);
最后一个字符串selectedKey=selectedItem.getKey();
StorageReference imageRef=mStorage.getReferenceFromUrl(selectedItem.getImageUrl());
imageRef.delete().addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
mDatabaseRef.child(selectedKey).removeValue();
Toast.makeText(Images_avactivity.this,“Item deleted”,Toast.LENGTH_SHORT.show();
}
});
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
mDatabaseRef.removeEventListener(mDBListener);
}
}
这是adpater代码:

Image\u adapter.java:

public class Images_Avctivity extends AppCompatActivity implements Image_adapter.OnItemClickListener {
    private RecyclerView mRecyclerView;
    private Image_adapter mAdapter;

    private ProgressBar mProgressCircle;

    private FirebaseStorage mStorage;
    private DatabaseReference mDatabaseRef;
    private ValueEventListener mDBListener;

    private List<Upload> mUploads;

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

        mRecyclerView = findViewById(R.id.recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        mProgressCircle = findViewById(R.id.progress_circle);

        mUploads = new ArrayList<>();

        mAdapter = new Image_adapter(Images_Avctivity.this, mUploads);

        mRecyclerView.setAdapter(mAdapter);

        mAdapter.setOnItemClickListener(Images_Avctivity.this);

        mStorage = FirebaseStorage.getInstance();
        mDatabaseRef = FirebaseDatabase.getInstance().getReference("uploads");

        mDBListener = mDatabaseRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                mUploads.clear();

                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                    Upload upload = postSnapshot.getValue(Upload.class);
                    upload.setKey(postSnapshot.getKey());
                    mUploads.add(upload);
                }

                mAdapter.notifyDataSetChanged();

                mProgressCircle.setVisibility(View.INVISIBLE);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(Images_Avctivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                mProgressCircle.setVisibility(View.INVISIBLE);
            }
        });
    }

    @Override
    public void onItemClick(int position) {
        Toast.makeText(this, "Normal click at position: " + position, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onWhatEverClick(int position) {
        Toast.makeText(this, "Whatever click at position: " + position, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDeleteClick(int position) {
        Upload selectedItem = mUploads.get(position);
        final String selectedKey = selectedItem.getKey();

        StorageReference imageRef = mStorage.getReferenceFromUrl(selectedItem.getImageUrl());
        imageRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                mDatabaseRef.child(selectedKey).removeValue();
                Toast.makeText(Images_Avctivity.this, "Item deleted", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mDatabaseRef.removeEventListener(mDBListener);
    }
}
 public class Image_adapter extends RecyclerView.Adapter<Image_adapter.ImageViewHolder> {

        private Context mContext;
        private List<Upload> mUploads;
        private OnItemClickListener mListener;

        public Image_adapter(Context context, List<Upload> uploads) {
            mContext = context;
            mUploads = uploads;
        }

        @Override
        public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(mContext).inflate(R.layout.image_item, parent, false);
            return new ImageViewHolder(v);
        }

        @Override
        public void onBindViewHolder(ImageViewHolder holder, int position) {
            Upload uploadCurrent = mUploads.get(position);
            holder.textViewName.setText(uploadCurrent.getName());
            Picasso.with(mContext)
                    .load(uploadCurrent.getImageUrl())
                    .placeholder(R.mipmap.ic_launcher)
                    .fit()
                    .centerCrop()
                    .into(holder.imageView);
        }

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

        public class ImageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,
                View.OnCreateContextMenuListener, MenuItem.OnMenuItemClickListener {
            public TextView textViewName;
            public ImageView imageView;

            public ImageViewHolder(View itemView) {
                super(itemView);

                textViewName = itemView.findViewById(R.id.text_view_name);
                imageView = itemView.findViewById(R.id.image_view_upload);

                itemView.setOnClickListener(this);
                itemView.setOnCreateContextMenuListener(this);
            }

            @Override
            public void onClick(View v) {
                if (mListener != null) {
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION) {
                        mListener.onItemClick(position);
                    }
                }
            }

            @Override
            public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
                menu.setHeaderTitle("Select Action");
                MenuItem doWhatever = menu.add(Menu.NONE, 1, 1, "Do whatever");
                MenuItem delete = menu.add(Menu.NONE, 2, 2, "Delete");

                doWhatever.setOnMenuItemClickListener(this);
                delete.setOnMenuItemClickListener(this);
            }

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                if (mListener != null) {
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION) {

                        switch (item.getItemId()) {
                            case 1:
                                mListener.onWhatEverClick(position);
                                return true;
                            case 2:
                                mListener.onDeleteClick(position);
                                return true;
                        }
                    }
                }
                return false;
            }
        }

        public interface OnItemClickListener {
            void onItemClick(int position);

            void onWhatEverClick(int position);

            void onDeleteClick(int position);
        }

        public void setOnItemClickListener(OnItemClickListener listener) {
            mListener = listener;
        }
    }
公共类映像\u适配器扩展了RecyclerView.adapter{
私有上下文;
私人列表多路复用器;
私人监听者;
公共映像_适配器(上下文、列表上载){
mContext=上下文;
mUploads=上传;
}
@凌驾
public ImageViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutFlater.from(mContext)。充气(R.layout.image_项,父项,false);
返回新的ImageViewHolder(v);
}
@凌驾
BindViewHolder上的公共无效(ImageViewHolder,int位置){
Upload uploadCurrent=mUploads.get(位置);
holder.textViewName.setText(uploadCurrent.getName());
毕加索(McContext)
.load(uploadCurrent.getImageUrl())
.占位符(R.mipmap.ic_启动器)
.fit()
.centerCrop()
.插入(支架.图像视图);
}
@凌驾
public int getItemCount(){
返回mUploads.size();
}
公共类ImageViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener,
View.OnCreateContextMenuListener,MenuItem.OnMenuItemClickListener{
公共文本视图文本视图名称;
公共影像视图;
公共图像视图持有者(视图项视图){
超级(项目视图);
textViewName=itemView.findViewById(R.id.text\u view\u name);
imageView=itemView.findViewById(R.id.image\u view\u upload);
setOnClickListener(这个);
setOnCreateContextMenuListener(这个);
}
@凌驾
公共void onClick(视图v){
if(mListener!=null){
int position=getAdapterPosition();
如果(位置!=RecyclerView.无位置){
姆利斯滕纳·奥尼麦克利克(职位);
}
}
}
@凌驾
public void onCreateContextMenu(ContextMenu菜单,视图v,ContextMenu.ContextMenuInfo菜单信息){
菜单。设置标题(“选择操作”);
MenuItem doWhatever=menu.add(menu.NONE,1,1,“Do