0

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

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

PS:

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

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

5 回答 5

0

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

于 2012-04-18T14:43:15.167 回答
0

通常,TextView 的内容应该只在一个活动中设置。尽管您可以在活动之外设置该值,但它并不是很有用。

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

于 2012-04-18T14:48:22.287 回答
0

我不确定你的问题,但尝试这样可能会奏效

((MainActivity) activity).textViewSetText();

public void textViewSetText (String value){

    tv.setText(value);    
}

但是您的活动必须扩展 MainActivity。

于 2013-09-19T14:03:20.823 回答
0

您可以使用外部静态类来保存要修改的字符串的值(并在返回到您的 TextView_Class 后设置值),只有访问静态类才能获取值。

您还可以将“this”(活动)保存在静态类中,并从任何地方访问该活动,因此您可以修改 TextView。(我不认为这会被推荐)。

视情况而定(您没有解释得足够多),如果它们是父子类,通常要做的是捆绑字符串。

于 2012-04-18T15:46:51.193 回答
0
  1. 不要从 UI 线程外部访问 Android UI 工具包
  2. AsyncTask允许您在用户界面上执行异步工作。它在工作线程中执行阻塞操作,然后在 UI 线程上发布结果,而无需您自己处理线程和/或处理程序。

这是一个例子:

    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);
        }
    }

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

于 2012-04-18T15:00:36.897 回答