You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Intent传递网络图片数据失败,新页面无法显示图片求助

问题:新Activity无法加载网络图片数据

问题现象

从RecyclerView点击跳转至新Activity后,图片无法加载,仅能正常显示文本内容。图片数据存储在MySQL中,通过Retrofit从服务器目录拉取。

相关代码

1. RecyclerView的OnBindViewHolder代码

Glide.with(holder.t1.getContext())
        .load("http://example/example/images/" + data.get(position).getImage()).into(holder.img);
}

2. RecyclerView Item点击事件代码

itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (iOtobusSaatleriInterface != null){
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION);
                    iOtobusSaatleriInterface.onItemClick(position);
                    Intent intent = new Intent(context,deneme.class);
                    intent.putExtra("name",data.get(position).getName());
                    intent.putExtra("resim", String.valueOf(Glide.with(itemView)
                            .load("http://example/example/images/")));
                    
                    context.startActivity(intent);
                }
            }
        });

3. 新Activity(deneme.class)代码

Intent intent = getIntent();
    String name = intent.getStringExtra("name");
    int goruntu = intent.getIntExtra("resim",0);
    imageView.setImageResource(goruntu);
    textView.setText(name);

问题原因

  1. 传值错误:点击事件中传递图片参数时,错误地将Glide的请求实例转为字符串传递,而非图片的完整URL。String.valueOf(Glide.with(itemView).load("http://example/example/images/"))得到的是Glide对象的toString结果,并非有效图片地址。
  2. 加载方式错误:新Activity中使用setImageResource()加载图片,该方法仅适用于本地drawable/mipmap资源的id,而你的图片是网络资源,不能用此方法加载。
  3. 逻辑漏洞:原点击事件中if (position != RecyclerView.NO_POSITION);多了一个分号,导致后续代码无论position是否有效都会执行,存在空指针风险。

解决方案

步骤1:修正点击事件的传值逻辑

传递完整的图片URL给新Activity,同时修复if语句的逻辑漏洞:

itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (iOtobusSaatleriInterface != null){
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION) {
                        iOtobusSaatleriInterface.onItemClick(position);
                        Intent intent = new Intent(context, deneme.class);
                        intent.putExtra("name", data.get(position).getName());
                        // 拼接完整图片URL并传递
                        String imageUrl = "http://example/example/images/" + data.get(position).getImage();
                        intent.putExtra("resim", imageUrl);
                        
                        context.startActivity(intent);
                    }
                }
            }
        });

步骤2:修正新Activity的图片加载逻辑

使用Glide加载传递过来的网络图片URL:

Intent intent = getIntent();
String name = intent.getStringExtra("name");
String imageUrl = intent.getStringExtra("resim");
// 用Glide加载网络图片
Glide.with(this)
        .load(imageUrl)
        .into(imageView);
textView.setText(name);

补充验证

确保你的AndroidManifest.xml中已添加网络权限:

<uses-permission android:name="android.permission.INTERNET" />

内容的提问来源于stack exchange,提问作者Bayram Kundaksiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:54:14