我正在尝试根据用户在 Recyclerview 中选择的项目启动新 Activity 。用户会点击一个选择,我想获取该所选项目的背景并将其设置为 Activity 。 到目前为止我已经尝试过了
- Intent
- setContentView(View) 以及 setContentView(Resource)
- View 切换器。
这些都不适合我。我还想让用户点击后退按钮并返回到选择列表,以防他们改变主意。执行此操作的最佳方法是什么?
编辑:背景是可绘制对象而不是颜色。 Intent 显然不是一个选项,因为我无法传递 drawable。
更新:我在我的主类中设置了一个公共(public) Drawable 对象,并通过调用 view.Background(); 为它分配了我所选项目的背景图像; 然后我检索该值并分配给我下一个 Activity 的主要布局,但它仍然无法正常工作。
LinearLayout lt = (LinearLayout) findViewById(R.id.firstLayout);
lt.setBackground(MainClass.backgroundDrawable);
这部分在我的新 Activity 中不起作用。我看到该值是正确的,但未将相同的 Drawable 分配给该 Activity 。
最佳答案
您可以在 XML
中或以编程方式标记每个 Drawable
,然后使用 getTag()
方法检索它。使用 getResources().getIdentifier(tag name, "drawable", .getPackageName())
获取 drawable 的资源 ID。
现在将其作为 intent
中的 extra
传递
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);
}
}
并且在您的 NextActivity 中,您可以提取额外的 bg
并编写一个 switch
来检查将哪个 drawable 作为背景,假设您使用多个图像背景。
关于android - 如何使用 RecyclerView 中选定项目的背景启动新 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566761/