textView更新不显示

时间:2013-08-13 23:15:04

标签: android

好的 - 前言我是Android的新手,也是java的新手。但是我在之前的一生中做过代码......

我正在开发一个应用程序,现在尝试将一些方法拉出来并放入实用程序类中。特别是,我有一个方法可以更新我想要移出活动的文本视图。

在活动中,我有两个版本的方法,唯一的区别是一个人会接受参数列表中的一个视图(我用这个来填充自定义对话框中的一些字段)。他们一切都很好。

一旦置于外部实用程序包/类中,该方法不再有效 - 没有错误,并且它似乎满足了所有需要 - 我已经完成了一些日志记录并且视图声明可见并且textview ID显示为是对的。然而屏幕上没有任何变化。

我猜这是完全明显和愚蠢的事情,但我似乎无法解决这个问题。

package xxx.xxx.Utility;

(some imports)

public class Utility {
    public static void updateTextView(int id, String opt_data, View v) {
        String TAG = "updateTextView: ";
        if (v.getVisibility() == View.VISIBLE) Log.i(TAG," visible");
        TextView tvTarget = (TextView) v.findViewById(id);
        if (tvTarget == null) {
            Log.i(TAG, "Error: updateTextView target is null");
        }
        if (opt_data != null) {
            if (tvTarget != null) {
                tvTarget.setText(opt_data);               
            }
        } else {
            if (tvTarget != null) {
                tvTarget.setText(" ");
            }
        }
    }
}

编辑附加信息:

在初始描述中,我提到过这个方法也被用于填充弹出对话框的某些字段和数据。事实上,我可以以这种方式请求任意数量的对话框,它们都可以正确显示并使用正确(和不同)的数据。所以它似乎只在尝试更新主要活动(初始)视图的电视数据时失败。

1 个答案:

答案 0 :(得分:0)

  

我猜这是完全明显和愚蠢的事,但我   似乎无法解决它。

有助于正确获取根(?)父(?)视图。 IE,

currentView = this.findViewById(android.R.id.content).getRootView();

现在一切都很好。