更改其他活动中的文本
如何从屏幕的另一部分动态更改 TextView 的内容?
我有一个TabActivity 类,它绘制一个RelativeLayout,其中包含一个TextView,后跟一个带有多个选项卡的。每个选项卡内都有一个单独的 Intent。从选项卡意图之一,我想更改父 TabActvity 中 TextView 的文本(通过 .setText)。
这可能吗?
How to dynamically change the content of a TextView from another part of the screen?
I have a TabActivity class that draws a RelativeLayout that contains a TextView followed by a with several tabs. Within each tab is a separate Intent. From one of the tab intents, I would like to change the text (via .setText) of the TextView from the parent TabActvity.
Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您应该使用 Android 架构组件 :
您可以创建一个 ViewModel 包含 LiveData 的数据对象 (
LiveData
如果您只想更改文本)。当您从一个
Activity
或Fragment
更改实时数据对象时,观察该实时数据对象的所有其他活动和片段都会收到通知。官方 API 文档有完整的示例和说明。
You should use Android Architecture Components :
You can create a ViewModel containing LiveData of your data object (
LiveData<String>
in case you want to change only text).When you will change your live data object from one
Activity
orFragment
all other Activities and Fragments observing for this live data object will get notified.Official API doc has complete example with description.
在 TabActivity 中创建一个公共方法来设置 TextView 的文本,然后从子活动中调用
getParent()
,将其转换为 TabActivity 类,然后调用该公共方法。Make a public method in your TabActivity that sets the TextView's text, then call
getParent()
from the child activity, cast it to your TabActivity class, then call that public method.您可以尝试为父选项卡实现一个处理程序来完成这项工作。从每个各自的选项卡传递消息对象中的文本。为了安全起见,请在 runOnUI 块内的处理程序中进行更改
You could try implementing a handler for the parent Tab which does the job. Pass the text in a message object from each of your respective tabs. To be safe, make changes within the handler inside a runOnUI block
在更改 asynctask 文件中的文本的情况下,您需要使用侦听器实现接口。示例:
AsynctaskFile:
ActivityFile:
此结构将帮助您防止空指针异常。
In a case of changing text from asynctask file, you need to implement an interface with a listener. Example:
AsynctaskFile:
ActivityFile:
This structure will help you to prevent null pointer exception.