2

好的 - 我是 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(" ");
            }
        }
    }
}

编辑带附加信息:

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

4

1 回答 1

0

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

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

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

现在一切都很好。

于 2013-08-14T21:43:17.667 回答