Вы не можете так делать.Как вы уже заметили, Android не может найти конкретный экземпляр Activity
, если у вас есть несколько экземпляров одного и того же Activity
в вашей задаче.Ваша архитектура в любом случае несовершенна, так как она не масштабируется, и вы уже видели, что не можете делать то, что хотите.
Правильный способ сделать это - не создавать несколько экземпляров вашего Activity
на всех.Когда пользователь хочет перейти из X City в Y City, вам просто нужно изменить данные в существующем экземпляре Activity
с показа X на показ Y. Используйте внутренний стек, чтобы запомнить навигацию, и протолкните объект, представляющий «X».в стек.Теперь, когда пользователь перемещается из Y City в Z City, вы помещаете объект, представляющий «Y», в стек и загружаете данные для Z City в представления.Когда пользователь нажимает кнопку НАЗАД.вы просто вытаскиваете верхний объект из стека и снова используете его для загрузки данных предыдущего города в представления.Когда пользователь нажимает BACK и стек пуст, вы просто вызываете finish()
на Activity
.
. Эта архитектура полностью масштабируема.Пользователь может пересекать столько городов, сколько захочет, и даже многократно перемещаться между двумя городами.У вас никогда не будет утечки памяти или переполнения стека, поскольку у вас есть только один экземпляр Activity
.