如何在 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"
我已经试过了:
- Create new instance using
Class<?>
,但它对我不起作用。
每次我将 ImageView
放在网格上时,是否有任何其他方法可以创建 .class
的 instances
?还有其他解决方法吗?
编辑:我必须提到我在 .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
我正在 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
orThermometer_pop_up.class
, i'll get the previous set "settings"
我已经试过了:
- Create new instance using
Class<?>
,但它对我不起作用。
每次我将 ImageView
放在网格上时,是否有任何其他方法可以创建 .class
的 instances
?还有其他解决方法吗?
编辑:我必须提到我在 .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