Изменение текста из другого действия

Как динамически изменить содержимое TextView из другой части экрана?

У меня есть класс TabActivity, который рисует RelativeLayout, который содержит TextView, а затем с несколькими вкладками. Внутри каждой вкладки есть отдельное намерение. Из одного из намерений вкладки я хотел бы изменить текст (через.setText) TextView из родительского TabActvity.

Это возможно?

4 ответа

Решение

Вы должны использовать компоненты архитектуры Android:

Вы можете создать ViewModel, содержащую LiveData вашего объекта данных (LiveData<String> в случае, если вы хотите изменить только текст).

Когда вы измените свой объект данных в реальном времени с одного Activity или же Fragment все другие Действия и Фрагменты, наблюдающие за этим объектом данных в реальном времени, будут уведомлены.

Официальный документ API имеет полный пример с описанием.

Сделайте публичный метод в вашем TabActivity, который устанавливает текст TextView, затем вызовите getParent() из дочернего действия приведите его к вашему классу TabActivity, а затем вызовите этот открытый метод.

Вы можете попробовать реализовать обработчик для родительской вкладки, которая выполняет эту работу. Передайте текст в объект сообщения с каждой из ваших соответствующих вкладок. Для безопасности внесите изменения в обработчик внутри блока runOnUI.

В случае изменения текста из файла asynctask вам необходимо реализовать интерфейс со слушателем. Пример:

AsynctaskFile:

OnReadyListener onReadyListener;

public class ABCAsynctaskFile{

   ...

   onReadyListener.onReady();

}

public interface OnReadyListener{

void onReady();

}


public void setOnReadyListener(OnReadyListener onReadyListener){

this.onReadyListener = onReadyListener;

}

ActivityFile:

public class ABC extends AppCompactActivity implements ABCAsynctaskFile.OnReadyListener{
   ..

   ABCAsynctaskFile aBCAsynctaskFileObj = new ABCAsynctaskFile(context);

   aBCAsynctaskFile.setOnReadyListener(ABC.this)

}

@Override

public void onReady(){

   // Your wished changed in edit text.

}

Эта структура поможет вам предотвратить исключение нулевого указателя.

Другие вопросы по тегам