无法解析 putextra 方法
Posted
技术标签:
【中文标题】无法解析 putextra 方法【英文标题】:cannot resolve putextra method 【发布时间】:2019-08-01 08:48:52 【问题描述】:我正在尝试通过 recyclerView 中的意图将图像从数组列表一个活动发送到另一个活动。但在 putextra 方法中,它显示错误,例如无法解析方法 'putextra(java.lang.string,android.widget.imageview)'
holder.itemView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
ImageView img = images.get(position);
Intent intent = new Intent(context,Result.class);
intent.putExtra("Image",img);
context.startActivity(intent);
);
【问题讨论】:
我们不能使用意图传递任何视图,如果您想发送图像,那么您可以使用意图发送图像 uri、文件或 url 并在第二个活动中获取它 【参考方案1】:您不能将 ImageView
作为额外的对象传递,您传递的对象必须是 Parcelable 或 Serialiazable。
您的 ImageView 也仅与此活动相关。如果您尝试将图像发送到另一个活动,最好发送图像的路径。
【讨论】:
你能解释一下parcelable object Zohaib 兄弟有一个图像数组列表,我想根据位置只发送一张图像,请帮助我 如果您有图像的路径或资源 ID,请改为发送。在此处阅读有关 parcelable 的信息:***.com/a/49252418/3266367 @AwaisAslam 这个 ArrayList 是从哪里加载的?这些图片来自哪里? 另外,看看this answer 发送可绘制的意图(但不推荐)【参考方案2】:你不能直接发送image
,因为intent
不支持
试试这个解决方案
您可以使用ByteArray
发送image
,例如
holder.itemView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
ImageView img = images.get(position);
img.buildDrawingCache();
Bitmap bmp = ((BitmapDrawable)img.getDrawable()).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Intent intent = new Intent(this, Result.class);
intent.putExtra("Image", byteArray);
context.startActivity(intent);
);
在结果活动类
的onCreate()
中
Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("Image");
//convert it to bitmap again
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
//set image to bitmap
image.setImageBitmap(bmp);
来源 Passing image from one activity another activity
【讨论】:
我试过了,但它在“imageView img=images.get(position)”处崩溃了应用程序 你能告诉我其他方式吗,基本上我正在尝试将选择的图像从回收站视图发送到其他活动 发布你的回收器适配器和活动类以及 POJO 类【参考方案3】:最后我终于做到了,您只需创建一个图像数组(注意:不要创建 arrayList),以防您想在多个图像之间进行选择,并简单地将这些图像传递给一个整数。下面是代码...
public void onBindViewHolder(MyViewHolder holder, final int position)
holder.image.setImageResource(images[position]);
holder.itemView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
int img = images[position];
Intent intent = new Intent(context,Result.class);
intent.putExtra("Images", img);
intent.putExtra("personName", Name);
intent.putExtra("Gender", Gender);
context.startActivity(intent);
);
//在目标活动中
public void getdata()
if (getIntent().getExtras() !=null)
gender = getIntent().getStringExtra("Gender");
Name = getIntent().getStringExtra("personName");
int image = getIntent().getIntExtra("Images",0);
mytext(gender,Name,image);
public void mytext(String gender,String Name,int img)
textView1 = findViewById(R.id.txt1);
textView2 =findViewById(R.id.txt2);
imageView = findViewById(R.id.Imagename);
textView1.setText(Name);
textView2.setText(gender);
imageView.setImageResource(img);
//然后在onCreate方法中调用“getdata();”
【讨论】:
以上是关于无法解析 putextra 方法的主要内容,如果未能解决你的问题,请参考以下文章
无法解析方法'setWebChromeClient(匿名android