从另一个活动更改文本

时间:2011-07-07 03:48:35

标签: android settext

如何从屏幕的其他部分动态更改TextView的内容?

我有一个TabActivity类,它绘制一个RelativeLayout,其中包含一个TextView,后跟一个包含多个选项卡的文件。每个选项卡中都有一个单独的Intent。从其中一个标签意图中,我想从父TabActvity更改TextView的文本(通过.setText)。

这可能吗?

4 个答案:

答案 0 :(得分:28)

您应该使用Android Architecture Components

您可以创建包含ViewModel数据对象的LiveData LiveData<String>,以防您只想更改文字。

当您要从一个ActivityFragment更改您的实时数据对象时,所有其他活动和片段将会收到通知。

Official API doc has complete example with description

答案 1 :(得分:6)

在TabActivity中创建一个设置TextView文本的公共方法,然后从子活动中调用getParent(),将其转换为TabActivity类,然后调用该公共方法。

答案 2 :(得分:0)

您可以尝试为执行该作业的父Tab实现处理程序。将文本传递到每个选项卡的消息对象中。为安全起见,在runOnUI块内的处理程序中进行更改

答案 3 :(得分:0)

在从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.

}

此结构将帮助您防止空指针异常。