gpt4 book ai didi

java - 在 Java 静态类上找不到方法

转载 作者:行者123 更新时间:2023-11-30 02:10:46 25 4
gpt4 key购买 nike

我正在使用 Android 通用图像加载器。

在所有示例代码中, View 都是通过 XML 创建的。我需要通过 Java 创建我的 View (没有膨胀)。我正在尝试将 View View 转换为 PhotoDisplayView 对象并调用 .test()。但是找不到.test()。

public View getView(int position, View convertView, ViewGroup parent)
{
final ViewHolder holder;
View view = convertView;
if (view == null) {
view = new PhotoDisplayView(parent.getContext());
holder = new ViewHolder();
assert view != null;
holder.imageView = (PhotoDisplayView)view.test();//test() CANNOT BE FOUND
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
}

这是我的静态类

static class PhotoDisplayView extends FrameLayout
{
public ImageView imageView;
public ProgressBar progressBar;

public PhotoDisplayView(Context context)
{
super(context);
imageView = new ImageView(context);
progressBar = new ProgressBar(context);
}

public void test()
{
Log.d("TEST","TEST");
}
}

我不明白为什么将其转换为 PhotoDisplayView 对象后我无法访问其功能?我正在获取一个 View 对象并将其转换为它的子类版本。为什么找不到方法?

注意:如果我将对象声明为 PhotoDisplayView 而不是 View,我确实可以访问该方法

最佳答案

我认为这只需要更多的括号来确保您按正确的顺序做事。 (PhotoDisplayView)view.test(); 将被解释为“调用 View.test(),然后将结果转换为 PhotoDisplayView。相反,试试这个:

// Should work
holder.imageView = ((PhotoDisplayView)view).test();

编辑:那么,另一个问题是您的 test() 方法是类型 void。如果你想把它赋值给holder.imageView,你需要确保它有一个返回值。

关于java - 在 Java 静态类上找不到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30133464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com