我正在尝试根据用户选择Recyclerview中的项目来启动新活动。用户可以点击选择,我想获得所选项目的背景并将其设置为活动。 到目前为止我已经尝试了
这些都不适合我。如果他们改变主意,我还想让用户点击按钮并返回选择列表。这样做的最佳方式是什么?
编辑:背景是可绘制的而不是颜色。意图显然不是一个选择,因为我无法通过drawable。
UPDATE:我在主类中设置了一个公共Drawable对象,并通过调用view.Background();为其指定了所选项目的背景图像。 然后我检索该值并分配给我的下一个活动的主要布局,但它仍然无法正常工作。
LinearLayout lt = (LinearLayout) findViewById(R.id.firstLayout);
lt.setBackground(MainClass.backgroundDrawable);
此部分不适用于我的新活动。我看到值是正确的,但同样的Drawable没有分配给活动。
答案 0 :(得分:1)
您可以在Drawable
或以XML
标记每个getTag()
,然后使用getResources().getIdentifier(tag name, "drawable", .getPackageName())
方法检索它。使用extra
获取drawable的资源ID。
现在将其作为intent
intent.putExtra("tag name",resource id);
传递给我
drawable
使用
检索getResources().getDrawable(intent.getIntExtra("tag name", -1));
img.png
修改强>
我真的不明白你想要完成什么,但假设你有一个名为LinearLayout lt = (LinearLayout) findViewById(R.id.firstLayout);
lt.setBackground(R.drawable.img);
lt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick() {
Intent intent = new Intent(getApplicationContext(), NextActivity.class);
intent.putExtra("bg", "img");
startActivity(intent);
}
}
的图像要设置为背景,你可以这样做:
bg
在你的NextActivity中,你可以提取switch
额外内容并写一个appearance.SetVisibleSignature
来检查哪个drawable作为背景,假设你使用多个图像作为背景。
答案 1 :(得分:0)
我在做了一些研究并按如下方式调整了我的代码后解决了它。我在主要活动中宣布了一个公共Drawable。我在
中跟踪了每张卡片视图的位置OnBindViewHolder(MyViewHolder vh,int position)
使用
if(position == 0){
holder.view.setBackgroundResource(R.drawable.image1);
}
然后我在MyViewHolder构造函数中的视图上注册onClickListener,我在其中将视图的背景分配给我的全局Drawable
gloabalDrawable = clickedView.getBackground();
我只需启动新活动并检索全局Drawable的值,并将其分配给新活动中的布局。