[英]Android: Call AsyncTask inner class from a separate Class File
我有一个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
}
}
谢谢
像这样的东西?
AlternateImageView alternateImageView = new TabsPagerFragmentActivity().new AlternateImageView();
alternateImageView.execute();
我想补充一点,我不打算将此判断为一个好的或坏的想法。
这是如何声明你的内部类:
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();
更改
public class
至
public static class
将AsyncTask声明为静态类。 静态内部类使得类在包的顶层与其他类的相同可见性处理,但是您可以获得将其作为内部类的组织好处。 例如:
Class1
Class2
Class3
>Inner1
Class4
要调用Inner1,您需要执行new Class3().new Inner1()
。 如果你像这样静态:
Class1
Class2
Class3
>static Inner1
Class4
然后你可以像创建new Inner1()
那样创建它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.