Как запустить новый экземпляр класса для каждого намерения в студии android - PullRequest
2 голосов
/ 05 мая 2020

Я создаю редактор в 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 повторяется в сетке, то у меня одинаковые «настройки» для каждых двух или более одинаковых классов

Например,

Допустим, я добавляю Clock_pop_up.class и устанавливаю «настройки», Часы на 06 и Минуты на 05

enter image description here

Затем я добавлю Thermometer_pop_up.class и установлю «настройки»

enter image description here

Проблема: Если я добавлю еще Clock_pop_up.class или Thermometer_pop_up.class, я получу предыдущий набор «настроек»

enter image description here

Я уже пробовал это:

Есть ли другой способ создать instances из .class каждый раз, когда я помещаю ImageView на сетка? Есть ли другой обходной путь?

Изменить: я должен упомянуть, что использую поля static в .class

1 Ответ

0 голосов
/ 10 июня 2020

Мне удалось это сделать, добавляя объект HashMap в каждое отображение PopUp.class каждый раз, когда создается новый объект.

Например:

Новый объект часов:

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 у меня есть HashMap для каждого Object в GridLayout и после этого я могу забрать все свои Objects через HashMap

...