如何在不同的类中调用方法并在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
...
MainActivity类:
...
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main)
mCallApi.Get();
...
所以在MainActivity中我可以运行该方法,但不知道如何在这里结果日期。
由于
答案 0 :(得分:0)
使用界面。由于代码是异步的,因此无法使用返回值。
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.
}
}
);
答案 1 :(得分:0)
一个。 public void Get(){}这没有任何用于将值返回给调用者的arragment B.即使它有一个返回类型,它是无关紧要的,因为你在方法中生成一个AsyncTask,返回 价值与经营结果无关。
现在出现问题,可以通过Observer设计模式解决。这是我对某个类似问题的回复,请仔细阅读。这将解决您的问题。 Observer Design