2015-12-09 100 views
0

我創建類包含函數。但我想在這個階級和階級在MainActivity中添加的AsyncTask類,但我不知道我能做到這一點:(外部類的調用類

外部類:

public class Function { 

    public Context mContext; 
    public Activity mactivity; 

    public Function(Context _context, Activity _activity) 
    { 
     mContext = _context; 
     mactivity = _activity; 
    } 

public class GetJson extends AsyncTask<String,String,JSONObject>{ 

     @Override 
     protected void onPreExecute(){ 

     } 

     @Override 
     protected JSONObject doInBackground(String... params) { 
      return null; 
     } 

     @Override 
     public void onPostExecute(JSONObject getJson){ 

     } 
    } 

我知道我可以調用方法與此:

Function _func = new Function(getBaseContext(),MainActivity.this); 
_func.someFunction(); 

,但我不知道如何調用類。

此代碼返回錯誤

_func.GetJson.execute(); 
+0

我不明白你的問題。什麼錯誤正在返回給你? – RafaelC

+0

您不要調用類,而是實例化(創建它們描述的對象的實例)並調用類中定義的方法。你真的想做什麼? – scrappedcola

+0

我使用此comde但返回錯誤_func.GetJson.execute(); – user3243573

回答

0

謝謝來自scrappedcola我找到答案。

public class Function { 

    public Context mContext; 
    public Activity mactivity; 

    public Function(Context _context, Activity _activity) 
    { 
     mContext = _context; 
     mactivity = _activity; 
    } 

public void runGetJson(){ 
     new GetJson().execute(); 
    } 

public class GetJson extends AsyncTask<String,String,JSONObject>{ 

     @Override 
     protected void onPreExecute(){ 

     } 

     @Override 
     protected JSONObject doInBackground(String... params) { 
      return null; 
     } 

     @Override 
     public void onPostExecute(JSONObject getJson){ 

     } 
    } 
0

你不能叫_func.GetJson.execute();因爲​​它不是一個靜態方法,和你一樣,調用它。

您應該創建一個GetJson對象並調用​​。如果您想在Function之外創建一個對象,您應該使GetJson爲靜態。

我的建議是,如果你打算創建一個擴展AsyncTask的內部類,可以在你要用來執行的類中進行。如果你不能,因爲你想在多個類中執行AsyncTask,那麼只需爲該AsyncTask創建一個類。