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