如何从不活动的类中为TextView设置值?

时间:2012-04-18 14:38:53

标签: android android-activity textview

如何从不活动的类中为TextView设置值?我们在未确定的时间获得的值,因此设置该类的值非常重要。

所有建议都会有所帮助。谢谢。

P.S。:

例如,在Actvity中我有方法,它将值设置为TextView。

public void textViewSetText (String value){
    tv.setText(value);    
} //how correctly to transfer value from my class to get the desired effect?

5 个答案:

答案 0 :(得分:0)

如果你没有掌握你的Activity,那么它是不可能的,因为TextView在Activity中可用。所以当你没有参考活动时,你也无法改变它的内容。如果您将活动引用传递给静态方法,则该方法可以进行修改。

答案 1 :(得分:0)

通常,TextView的内容只应在活动中设置。虽然您可以在活动之外设置该值,但它并不十分有用。

至于你的问题,你在不确定的时间得到了值,有一些选择。例如,你可以注册一个回调到那个类,当另一个类得到那个值时,你可以发送一个消息打回来。但要注意线程问题,将值设置为TextView是一个UI操作,只能在UI线程中完成。

答案 2 :(得分:0)

  1. 不要从UI线程外部访问Android UI工具包
  2. AsyncTask允许您在用户界面上执行异步工作。它在工作线程中执行阻塞操作,然后在UI线程上发布结果,而不需要您自己处理线程和/或处理程序。
  3. 以下是一个例子:

        public void onClick(View v) {
            new SomeTask().execute(something);
        }
        private class SomeTask extends AsyncTask<Something, Void, String> {
            /** The system calls this to perform work in a worker thread and
              * delivers it the parameters given to AsyncTask.execute() */
            protected Bitmap doInBackground(Something something) {
                return string; // the TextView's text
            }
    
            /** The system calls this to perform work in the UI thread and delivers
              * the result from doInBackground() */
            protected void onPostExecute(String result) {
                textView.setText(result);
            }
        }
    

    但是,如果您不详细说明您的案例,则没有确切的答案可能会让您满意。

答案 3 :(得分:0)

您可以使用外部静态类来保存要修改的String的值(并在返回TextView_Class时设置值),只能访问静态类来获取值。

您也可以在静态类中保存“this”(Activity)并从任何地方访问该Activity,这样您就可以修改TextView。 (我不认为这会被推荐)。

根据具体情况(你没有解释过),正常的做法是捆绑字符串,如果它们是父子类。

答案 4 :(得分:0)

我不确定你的问题但是 尝试这样可能会起作用

((MainActivity) activity).textViewSetText();

public void textViewSetText (String value){

    tv.setText(value);    
}

但您的活动必须扩展MainActivity。