有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何调用方法

如何在不同的类中调用方法并在MainActivity中获得结果

我正在调用API中的Get方法。但我不确定如何将结果数据传回mainActivity:

我的密码

CallAPI类:

...
public void Get() {
        Log.i(TAG, "GET()");
        // GET method example
        new AsyncTask<Void, Void, String>() {

            protected String doInBackground(Void... parameters) {
                API api = new API(mApiKey, mApiSecret);

                List<NameValuePair> params = new ArrayList<NameValuePair>();       
                params.add(new BasicNameValuePair("api_key", mApiKey));                     

                return api.get("category", params);
            }

            protected void onPostExecute(String result) {  // *** >I NEED THIS result< ***
                Log.i(TAG + " - APIRESULT", "GET() => " + result);
            }

        }.execute();
    }//end Get
...

main活动类:

...
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main)

           mCallApi.Get();

...

因此,在MainActivity中,我可以运行该方法,但不确定如何在这里输入结果日期

谢谢


共 (1) 个答案

  1. # 1 楼答案

    使用一个接口。因为代码是异步的,所以不能使用返回值

    interface myCallBack(){
        public void callBack( String result );
    }
    
    public void Get(final myCallBack callback) {
        Log.i(TAG, "GET()");
        // GET method example
        new AsyncTask<Void, Void, String>() {
    
            protected String doInBackground(Void... parameters) {
                API api = new API(mApiKey, mApiSecret);
    
                List<NameValuePair> params = new ArrayList<NameValuePair>();       
                params.add(new BasicNameValuePair("api_key", mApiKey));                     
    
                return api.get("category", params);
            }
    
            protected void onPostExecute(String result) {  // *** >I NEED THIS result< ***
                Log.i(TAG + " - APIRESULT", "GET() => " + result);
                callback.callBack( result );
            }
    
        }.execute();
    }
    

    班上的学生:

    get( new myCallBack(){ 
       public void callBack(String result ){
       //do something with result.
       }
    } 
    );