2015-12-09 74 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创建一个类。