android - 如何使用 RecyclerView 中选定项目的背景启动新 Activity

标签 android android-activity android-recyclerview

我正在尝试根据用户在 Recyclerview 中选择的项目启动新 Activity 。用户会点击一个选择,我想获取该所选项目的背景并将其设置为 Activity 。 到目前为止我已经尝试过了

  1. Intent
  2. setContentView(View) 以及 setContentView(Resource)
  3. 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/

相关文章:

Android fragment getActivity() = null

android - 避免在 recyclerview gridlayoutmanager 中滚动第一行和第一列

android - 获取 View 在 GridLayoutManager 上的列号

java - Android-第二秒后未添加字符串

Android 自动启用蓝牙 -> 应用需要重启才能正常使用蓝牙

android - 底部 TabLayout 位于键盘顶部

android - RecyclerView 适配器中的匿名监听器

android - 更新 Application 类中的数组列表

android - 日本字符在 Android TextView 和按钮中显示奇怪的间距

android - 如何在用户通过按下 Android 中的后退键关闭警报对话框时捕获事件