我有一个Class:TabsPagerFragmentActivity,它托管所有标签。
然后我有一个单独的类:ShopsFragment,它有一个扩展AsyncTask的内部类
我正在尝试从TabsPagerFragmentActivity调用此内部类的.execute方法但是我得到了
No enclosing instance of the type is accessible error.
有没有办法从TabsPagerFragmentActivity调用此内部类执行? 基本上我只是在用户离开这个片段时尝试更改图像。
代码:
public class AlternateImageView extends AsyncTask<String,Integer,Void>{
@Override
protected Void doInBackground(String... params) {
return null;
}
@Override
protected void onProgressUpdate(Integer... progress) {
}
@Override
protected void onPostExecute(Void v) {
//Do something
}
}
由于
答案 0 :(得分:1)
这样的东西?
AlternateImageView alternateImageView = new TabsPagerFragmentActivity().new AlternateImageView();
alternateImageView.execute();
我想补充一点,我不打算将此判断作为一个好主意或坏主意。
答案 1 :(得分:1)
这是如何声明你的内部类:
public class AlternateImageView extends AsyncTask<String,Integer,Void>
要从其他类文件中使用此类,您需要添加单词static,如下所示:
public static class AlternateImageView extends AsyncTask<String,Integer,Void>
然后你可以像这样使用你的课程:
AlternateImageView task = new TabsPagerFragmentActivity.AlternateImageView();
task.execute();
答案 2 :(得分:1)
更改
public class
到
public static class
答案 3 :(得分:0)
将AsyncTask声明为静态类。静态内部类使得类在包的顶层与其他类的相同可见性处理,但是您可以获得将其作为内部类的组织好处。例如:
Class1
Class2
Class3
>Inner1
Class4
要调用Inner1,您需要执行new Class3().new Inner1()
。如果你像这样使它静止:
Class1
Class2
Class3
>static Inner1
Class4
然后你可以像创建new Inner1()