好的 - 前言我是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(" ");
}
}
}
}
编辑附加信息:
在初始描述中,我提到过这个方法也被用于填充弹出对话框的某些字段和数据。事实上,我可以以这种方式请求任意数量的对话框,它们都可以正确显示并使用正确(和不同)的数据。所以它似乎只在尝试更新主要活动(初始)视图的电视数据时失败。
答案 0 :(得分:0)
我猜这是完全明显和愚蠢的事,但我 似乎无法解决它。
有助于正确获取根(?)父(?)视图。 IE,
currentView = this.findViewById(android.R.id.content).getRootView();
现在一切都很好。