簡體   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