繁体   English   中英

Android:从单独的类文件中调用AsyncTask内部类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM