解析来自互联网的数据。但是我需要从另一-6ren">
gpt4 book ai didi

android - "No enclosing instance of type"在Android中从另一个类调用方法时出错

转载 作者:IT老高 更新时间:2023-10-28 22:19:45 26 4
gpt4 key购买 nike

同学们,我有这样一个问题:1. 在我的第一个类中,我有

public class parseYouTubeAndYahoo extends AsyncTask<String, Void, List<VideoDataDescription>>

解析来自互联网的数据。但是我需要从另一个类调用这个类的 execute() 方法。在尝试纠正此类代码时:

new MainActivity.parseYouTubeAndYahoo().execute("someURL"); 

我收到来自 Eclipse 的下一条错误消息

没有可以访问 MainActivity 类型的封闭实例。必须使用 MainActivity 类型的封闭实例来限定分配(例如 x.new A(),其中 x 是 MainActivity 的实例)。

这个问题对我来说确实笼罩在迷雾中。那么,如何从另一个类中调用这个方法呢?

最佳答案

就此处的实际错误而言,如果 parseYouTubeAndYahoo 类是您的 Activity 内部的非静态内部类,那么您需要一个封闭类的实例来实例化内部类。所以,你需要:

MainActivity myActivity = new MainActivity();
MainActivity.parseYouTubeAndYahoo asyncTask = myActivity.new parseYouTubeAndYahoo();

但是....

您真的不应该从 Activity 外部实例化您的 Activity 的非静态内部类,因为为了实例化非静态内部类,您必须实际实例化封闭类,在这种情况下,它是 Activity。 Activity 旨在启动,而不是通过 new 实例化。如果您想在不同的地方使用 AsyncTask,则创建一个从 AsyncTask 扩展的新顶级类。

(有关创建可重用 AsyncTasks 的示例,请参见:https://github.com/levinotik/ReusableAsyncTask)

请注意,如果您需要获取 static 嵌套类,您尝试使用的语法将有效。这是因为在这种情况下,外部类实际上只是充当 namespace ,但嵌套类,因为它是静态的,实际上不需要对外部类的实例的引用。因此:

OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass();

是获取 static 嵌套类实例的正确语法。

关于android - "No enclosing instance of type"在Android中从另一个类调用方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9053864/

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