从另一个类更改Android TextView文本

3
我在MainActivity中有一个TextView,我希望能够在另一个类中改变TextView的文本内容。
如何从另一个类访问MainActivity中的TextView
我尝试了以下代码:
TextView textView = (TextView) findViewById(R.id.myTextView);
textView.setText("Text");
但是当调用setText()时,应用程序崩溃了。

你可以检查这个链接。 https://dev59.com/kWw15IYBdhLWcg3wcbay?answertab=active#tab-top - Mohammad Ullah
请查看此问题:https://dev59.com/WGgu5IYBdhLWcg3w5LBa - Irfan Ul Haq
3个回答

9

您需要使用runOnUiThread(new Runnable()...

请参考以下内容:

import android.content.Context;

private class AnotherClass {
        protected MainActivity context;

        public AnotherClass(Context context){
            this.context = (MainActivity) context;
        }

        public void updateTV(final String str1){
            context.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    context.textView.setText(str1);    
                }
            });
        }
    }

2

如果您想更新TextView的文本,一种可能的方法是编辑由您的类共享的通用数据模型中的文本。如果稍后从活动调用onResume,它可以从模型中读取新值并更新TextView。


1
我建议使用一个处理程序来更新该活动的内容。这只是一种方法,有多种方法可以实现。
处理程序的整个目的是让一些后台进程/线程将信息传递到UI线程中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接