2015-05-06 6 views
0

У меня есть два вида деятельности, Home.java и Profile.java.Получить данные для старой активности при перезапуске активности

Когда пользователь нажимает на профиль пользователя в ListView в Home.java, я получаю имя пользователя для этого пользователя, сохраняю его в статической переменной Home.usernameProfile и перейдите в Profile.java, где я загружаю данные для щелкнутого имени пользователя, используя статическую переменную Home.usernameProfile.

Из профиля вы можете перейти в другой профиль (начать новую деятельность Profile.java), а затем вы установите Home.usernameProfile для нового профиля.

Проблема в том, что если я вернусь от второго профиля к первому профилю в переменной Home.usernameProfile, у меня все равно будет имя пользователя для второго профиля, и мне нужно будет иметь имя пользователя для первого профиля, потому что я делаю что-то в профиле, который требует Home.usernameProfile переменная.

Я попытался создать TextView в Profile.java, сохранить Home.usernameProfile значение переменной в TextView и вернуть его в Home.usernameProfile при перезагрузке активности с использованием public void onRestart() { super.onRestart(); ...}, но TextView возвращает другое значение.

Кто-нибудь знает, как я могу получить имя пользователя для текущего отображаемого профиля при возврате из другого профиля?

+0

Как вы переходите от одного профиля к следующему профилю? Открываете ли вы новое действие или просто заменяете данные в текущем? – EpicPandaForce

+0

В переменной Home.usernameProfile я сохраняю новое имя пользователя, а затем запускаю новое действие. – user3051755

+0

Можете ли вы разместить код –

ответ

2

Вы используете статическую переменную в неправильном месте, не делаете этого. Статическая переменная - это переменная уровня класса, и она используется для того, чтобы иметь единое (общее) значение все время для этого класса.

Читайте о статическом ключевом слове здесь: - Official Doc

Изменение статического переменного значения будет отражать значение переменного во всех местах. (Think статичным, как это будет иметь только одно значение это значение будет последним присвоенное значение Изменение значения перепишет его старое значение.)

Проблема: -

Что здесь происходит, когда вы начинаете Profile.java и установить значение в Home.usernameProfile, он работает, но если вы выберете другой профиль, он перезапишет значение Home.usernameProfile с новым значением. Поскольку это поле статично в вашем сценарии, оно теперь будет иметь это новое значение во всех местах, потому что вы его намеренно изменили. (Это как статические работы.)

Для решения: -

Приходя из Home.java в Profile.java передать данные с помощью намерения. Pass data from one activity to other. и удалите статическое поле из Home.java, вам это не нужно сейчас.

Теперь в файле Profile.java вы можете легко получить переданные данные и работать с ним.

Надеюсь, это поможет,

Спасибо.

Смежные вопросы