我在Android应用程序中遇到问题:
我试图动态更新TextView中的文本,但UI中没有更改。当我检入代码时(例如通过显示Toast或在调试器中),如果文本已经改变,它就会有,但GUI不会更新。
这里是我的代码:Android runOnUiThread不更新布局元素
<TextView
android:id="@+id/textViewNick"
android:gravity="bottom|left"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
public void changeNick(final String nick)
{
this.runOnUiThread(new Runnable()
{
@Override
public void run()
{
View view = View.inflate(MyApplication.getAppContext(), R.layout.activity_nick, null);
TextView textViewNick = (TextView) view.findViewById(R.id.textViewNick);
textViewNick.setText(nick);
}
});
}
的changeNick()
方法是从另一个类调用。
有谁知道为什么是这样以及如何解决它?提前致谢。
编辑
我发现了changeNick()
方法之前活动的onCreate()
调用。我在onCreate()
中添加了一个标志作为最后一条指令,我在调用changeNick()
之前检查了它,但它没有帮助,但仍然得到IllegalStateException“系统服务在onCreate()之前不可用于活动”。
解决
的changeNick()
方法之前活动的onCreate()
是所谓的,因为我有这样的活动的两个不同的实例。我正在对尚未创建的那个执行`changeNick(),所以我得到了NullPointerException。
无论如何,谢谢大家的帮助。
您是否尝试过用充气主办活动的上下文中的视图中的文本?我看到你正在使用应用程序上下文,而这可能不会给你你想要的。 – Benstrom
嗨,它解决了,还是还有一些问题呢? –