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

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

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

Возможно ли это?

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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.

}

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