Передача данных сразу во все активити
Я передаю каждый раз при переходе большое количество переменных, которые нужны для работы программы. Но их слишком много, и чтобы ни одна переменная не пропала, мне каждый раз ее надо прописывать при переходе. Использую intent для передачи и перехода. Кусок из кода:
Intent i = new Intent(getApplicationContext(), GameActivity.class);
i.putExtra("cheats",cheats);
i.putExtra("showhidebotsandmachinesvalue",showhidebotsandmachinesvalue);
i.putExtra("alphabuttonvalue",alphabuttonvalue);
i.putExtra("showhideconsolevalue",showhideconsolevalue);
i.putExtra("playerhp",playerhp);
i.putExtra("energy",energy);
i.putExtra("mymoney",mymoney);
i.putExtra("mymoney",mymoney);
i.putExtra("y",y);
i.putExtra("x",x);
i.putExtra("location",location);
i.putExtra("newgame",newgame);
i.putExtra("savesettings",savesettings);
startActivity(i);
У меня активити много, и прописывать каждый раз все это неудобно. Есть простой вариант передачи?
Ответы (1 шт):
Решения простого не будет. Если вам надо передавать много данных - придётся передавать.
Можно только как-то защититься от ошибок. Например создать класс, который будет иметь поля для ваших данных и их инициализацию в конструкторе. Соответственно передавать надо будет экземпляр этого класса. Так вам компилятор не даст забыть какой-то параметр. Однако это будет работать только если между активити всегда передаётся один и тот же набор данных. Если они разные, то надо для каждого случая свой класс создавать.
Либо пойти вообще с другой стороны. Например сейчас модно использовать всего одну активити - не будет вообще указанной вами проблемы. Правда, она заменится передачей тех же данных уже во фргменты.
Либо вообще хранить всё это в третьем месте, например в БД. И в каждой активити брать из БД - тогда вообще меж активити ничего передавать не надо.