gpt4 book ai didi

来自另一个类(不是 Activity )的 Android settext() 不起作用

转载 作者:行者123 更新时间:2023-12-05 00:17:41 25 4
gpt4 key购买 nike

我有一个主要 Activity ,其中布局膨胀。我在 Activity 中有一个 TextView (textView),我想从另一个名为“Util.java”的类(该类不扩展任何内容,它只是一个库类)更新它,我在其中编写了项目常用的方法可重用性)。

现在,在接收广播时,我通过使用“Util.setLoadingText(R.string.loadingText_creating_device);”调用 Util.java 中的方法来更新“textView”的文本

 public static void setLoadingText(int resId) {
if (!Util.isNull(loadingText)) {
Log.d(Util.TAG, LOG_LABEL + "SET TEXT CALLED:SHOW LOADING SCREEN" );
loadingText.setText(resId);

}
}

在调用上述方法之前,我在主 Activity 的 onCreate 中调用“Util.init(this)”。下面是代码

 public static void init(Activity activity) {
activity.setContentView(R.layout.loading_screen);
Log.d(Util.TAG, LOG_LABEL + "INIT CALLED:SHOW LOADING SCREEN" );
loadingText = (TextView) activity.findViewById(R.id.loadingScreenTextView);
}

没有编译错误,但是

  loadingText.setText(resId);

不更新文本。谁能指出我哪里出错了?

最佳答案

除了 ui 线程之外,您无法从任何地方更新 ui 线程上的内容,您需要使用它。其中 mAct 是主要 Activity ,但您必须将其作为参数传递给另一个类,以便它可以访问因为它不能是静态引用

public static void updateText(Activity act, resID)
{

loadingText = (TextView) activity.findViewById(R.id.loadingScreenTextView);
act.runOnUiThread(new Runnable()
{
public void run()
{
loadingText.setText(resID);

}

});
}

关于来自另一个类(不是 Activity )的 Android settext() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18590356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com