Как мне установить Text для TextView, которого нет в текущей «активной деятельности» - PullRequest
0 голосов
/ 22 февраля 2012

У меня есть активность, которая при выборе элемента. Запускает новый поток, задающий номер активного переадресации вызовов, и устанавливает этот номер как текст TextView в другом действии.

Я пробовал это:

        newnumber[0] = ((TextView) view).getText().toString();
        new PushNumberTask().execute(newnumber);
        TextView activeNumberTV = (TextView) findViewById(R.id.activeNumberTextView);
        activeNumberTV.setText(newnumber[0]);

Но я получаю исключение NullPointerException всякий раз, когда он пытается установить текст. Какую глупую ошибку я делаю? Я должен упомянуть, что номер фактически изменяется на сервере и в пользовательской информации. Просто обновление текстового поля из другого действия вызывает исключение.

РЕДАКТИРОВАТЬ: немного упростил мою проблему (я надеюсь). У меня есть класс модели с SharedPreferences userInfo.getString ("число") Я хочу уведомить TextView всякий раз, когда эта строка обновляется / изменяется. Как мне это сделать?

Ответы [ 3 ]

1 голос
/ 22 февраля 2012

Это очень плохая практика. Что бы я сделал, я бы отправил его через намерение или использовал метод установки геттера в некотором классе данных, и когда это действие выйдет на передний план, я бы установил его текст ... вы можете установить его вonActivityResult() или onResume() методы

0 голосов
/ 22 февраля 2012

Или вы можете создать свой класс Application (см. Эту ссылку ) и установить там некоторую переменную, которая будет отражать предполагаемое значение текстового представления, которое вы хотите изменить. Затем просто установите это в onResume действия, владеющего этим TextView. Переменная должна сохраняться до тех пор, пока все действия в вашем приложении активны.

0 голосов
/ 22 февраля 2012

вы должны использовать объект SharedPreference, чтобы получить это.

SharedPreference s_pref=PreferenceManager.getDefaultSharedPreferences(context);
Editor edit=s_pref.edit();
edit.putString("text","new_text");
edit.commit();

теперь в методе onResume () действия, где вы хотите обновить textview,

SharedPreference s_pref=PreferenceManager.getDefaultSharedPreferences(context);
String s=s_pref.getString("text","default_text");
textview.setText(s);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...