如何在 android 工作室中为每个意图启动一个 class 的新实例

How to start a new instance of a class for every intent in android studio

我正在 Android 中创建一个编辑器,并且对于每个 类型的 ImageView 我正在创建一个 .class

ImageViews的类型如下:

private Class<?> popups[] = {
Clock_pop_up.class, TV_kitchen_pop_up.class, Thermometer_pop_up.class, CoffeeMachine_pop_up.class, Fridge_pop_up.class, Oven_pop_up.class, Air_pop_up.class, TV_livingroom_pop_up.class
};

我已经用 <style> 修改了这些 类,每个 Intent 它都显示为弹出对话框

问题是这样的:

Intent intent = new Intent(getApplicationContext(), (Class<?>) popups[finalI]);
startActivity(intent);

它正确显示了弹出窗口,尽管如果 .class 在网格上自我重复,那么我有相同的 "settings" 每两个或更多相同的 类

例如

假设我添加了一个 Clock_pop_up.class 并将 "settings"、 小时 设置为 06 和 分钟 至 05

然后我将添加一个 Thermometer_pop_up.class 并设置 "settings"

The Problem: If i add another Clock_pop_up.class or Thermometer_pop_up.class , i'll get the previous set "settings"

我已经试过了:

每次我将 ImageView 放在网格上时,是否有任何其他方法可以创建 .classinstances?还有其他解决方法吗?

编辑:我必须提到我在 .class

中使用 static 字段

我设法通过在每个新对象时向每个 PopUp.class 映射添加一个 HashMap 对象来做到这一点。

例如:

新时钟对象:

import java.io.Serializable;

public class Clock implements Serializable {
    private String hour;
    private String minute;
    private String condition;

    public Clock(String hour, String minute,String condition) {
        this.hour = hour;
        this.minute = minute;
        this.condition=condition;
    }

    public Clock() {
    }

    public String getHour() {
        return hour;
    }

    public void setHour(String hour) {
        this.hour = hour;
    }

    public String getMinute() {
        return minute;
    }

    public void setMinute(String minute) {
        this.minute = minute;
    }

    @Override
    public String toString() {
        return "Test{" +
                "hour='" + hour + '\'' +
                ", minute='" + minute + '\'' +
                '}';
    }

    public String getCondition() {
        return condition;
    }

    public void setCondition(String condition) {
        this.condition = condition;
    }
}

然后在 Clock_pop_up.class 我创建了 HashMap 对象,如下所示:

 public static  HashMap<String, Clock> currentObject = new HashMap<>(); 

所以对于每个 PopUp.class 我在 GridLayout 上为每个 Object 都有一个 HashMap 然后我可以通过 HashMap 收集我所有的 Objects