1

我有一个类: 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 
                }
         }

谢谢

4

4 回答 4

1

像这样的东西?

AlternateImageView alternateImageView = new TabsPagerFragmentActivity().new AlternateImageView();
alternateImageView.execute();

我想补充一点,我不会对此做出判断,这是一个好主意还是坏主意。

于 2012-07-19T14:09:20.480 回答
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();
于 2012-07-19T14:22:42.307 回答
1

改变

public class 

public static class
于 2012-07-19T14:45:39.727 回答
0

将您的 AsyncTask 声明为静态类。静态内部类使该类与包顶层的其他类具有相同的可见性,但是您可以获得将其作为内部类的组织优势。例如:

Class1
Class2
Class3
    >Inner1
Class4

要调用 Inner1,您需要执行new Class3().new Inner1(). 如果你让它像这样静态:

Class1
Class2
Class3
    >static Inner1
Class4

然后你可以像在包中的任何其他类一样创建它new Inner1()

于 2012-07-19T14:29:00.917 回答