如何从屏幕的其他部分动态更改TextView的内容?
我有一个TabActivity类,它绘制一个RelativeLayout,其中包含一个TextView,后跟一个包含多个选项卡的文件。每个选项卡中都有一个单独的Intent。从其中一个标签意图中,我想从父TabActvity更改TextView的文本(通过.setText)。
这可能吗?
答案 0 :(得分:28)
您应该使用Android Architecture Components:
您可以创建包含ViewModel数据对象的LiveData LiveData<String>
,以防您只想更改文字。
当您要从一个Activity
或Fragment
更改您的实时数据对象时,所有其他活动和片段将会收到通知。
答案 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.
}
此结构将帮助您防止空指针异常。