12

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

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

这可能吗?

4

4 回答 4

27

您应该使用Android 架构组件

您可以创建一个包含数据对象的LiveData的ViewModel (如果您只想更改文本)。LiveData<String>

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

官方 API 文档有完整的示例和描述

于 2011-07-07T04:46:51.783 回答
6

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

于 2011-07-07T03:52:37.613 回答
0

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

于 2011-07-07T04:07:10.637 回答
0

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

}

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

于 2017-06-07T06:33:15.887 回答