如何从屏幕的另一部分动态更改 TextView 的内容?
我有一个 TabActivity 类,它绘制了一个包含 TextView 的 RelativeLayout,后跟一个带有多个选项卡的标签。每个选项卡中都有一个单独的 Intent。从选项卡意图之一,我想从父 TabActvity 更改 TextView 的文本(通过 .setText)。
这可能吗?
您应该使用Android 架构组件:
您可以创建一个包含数据对象的LiveData的ViewModel (如果您只想更改文本)。LiveData<String>
当您从一个Activity
或Fragment
所有其他活动更改您的实时数据对象时,将收到通知。
在您的 TabActivity 中创建一个设置 TextView 文本的公共方法,然后getParent()
从子活动调用,将其转换为您的 TabActivity 类,然后调用该公共方法。
您可以尝试为执行该工作的父选项卡实现一个处理程序。从您各自的每个选项卡传递消息对象中的文本。为了安全起见,请在 runOnUI 块内的处理程序内进行更改
在从 asynctask 文件更改文本的情况下,您需要实现一个带有监听器的接口。例子:
异步任务文件:
OnReadyListener onReadyListener;
public class ABCAsynctaskFile{
...
onReadyListener.onReady();
}
public interface OnReadyListener{
void onReady();
}
public void setOnReadyListener(OnReadyListener onReadyListener){
this.onReadyListener = onReadyListener;
}
活动文件:
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.
}
此结构将帮助您防止空指针异常。