@terminator-light

Практично ли передавать объекты в качестве параметра другому контроллеру в Conductor?

Как понял, передавать можно, но могут ли случиться непредвиденные ситуации?

CheckoutController:
public void init(){
     btn.setOnClickListener(v->getRouter().pushController(RouterTransaction.with(address == null ?  new AddressController(this) : new AddressController(address, this)));
}
@Override
public void setAddress(Address address) {
     this.address = address;
     tvAddress.setText(address.street+" "+address.house);
}

AddressController:
public <T extends Controller & CheckoutListener> AddressController(Address address, T listener) {
        this(new BundleBuilder()
        .putString("street", address.street)
        .putString("house", address.house)
        .build());
        setTargetController(listener);
}

public AddressController(Bundle bundle){
        address.street = bundle.getString("street");
        address.house = bundle.getString("house");
}

public void init(){
        btnSave.setOnClickListener(v->{
            getRouter().popCurrentController();
            Address address = new Address();
            address.street =  etStreet.getText().toString();
            address.house =  etHouse.getText().toString();
            CheckoutListener listener = (CheckoutListener) getTargetController();

            if (listener != null) {
                listener.setAddress(address);
            }
        });
}


Или в SharedPreference лучше сохранять?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Никакого смысла в том, что ты сделал, нет. Ничего не сохранится при пересоздании. Более того, оно упадёт, тк ты не сделал пустой конструктор.
Аргументы нужно передавать через бандл getArgs().
Сохранять в shared preferences тупо, тк это персистентное хранилище.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы