Изменение текста из другого действия - PullRequest
12 голосов
/ 07 июля 2011

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

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

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

Ответы [ 4 ]

28 голосов
/ 07 июля 2011

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

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

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

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

6 голосов
/ 07 июля 2011

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

0 голосов
/ 07 июня 2017

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

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.

}

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

0 голосов
/ 07 июля 2011

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

...