【发布时间】:2014-09-18 00:47:39
【问题描述】:
我最近开始尝试自学如何编写 Android 应用程序,但我在理解/实现从我正在调用的类中传递一组结果的方法时遇到了一点困难。
由于我不知道如何完美地布局这个例子,请多多包涵!
我有我的MainActivity,它正在调用类AsyncTaskParseJson(部分来自在线示例的科学怪人)。现在,我的 MainActivity 可以调用该类,并取回一个显示真/假的字符串。我希望将一个数组或转换为字符串的数组返回给我的 MainActivity 以进行进一步处理。
代码:
package jesse.jones.test;
import android.os.AsyncTask;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* Created by Shadow on 9/16/14.
*/
// you can make this class as another java file so it will be separated from your main activity.
public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
final String TAG = "AsyncTaskParseJson.java";
String userEmail;
String userPassword;
String doAction;
String reportArray;
// set your json string url here
String yourJsonStringUrl = <-url removed->;
// contacts JSONArray
JSONArray dataJsonArr = null;
MainActivity mActivity;
public AsyncTaskParseJson(MainActivity activity){
mActivity = activity;
}
public void setCredentials(String inUserEmail,String inUserPassword){
userEmail = inUserEmail;
userPassword= inUserPassword;
}
public void setAction(String actionToTake){
doAction = actionToTake;
}
protected String urlBuilderv1(String actionToTake,String inUserEmail, String inUserPassword){
String urlString = <-url removed->
if (actionToTake == "test"){
urlString = <-url removed->
}
if (actionToTake == "login"){
urlString = <-url removed->
}
if (actionToTake == "getReports"){
urlString = <-url removed->
}
return urlString;
}
public String getReportArray(){
return reportArray;
}
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... arg0) {
String jsonReturnedResult = "NORETURN";
String jsonReturnedMessage = null;
String jsonReturnedReports = null;
String result = null;
try {
// instantiate our json parser
JasonParser jParser = new JasonParser();
yourJsonStringUrl = urlBuilderv1(doAction,userEmail,userPassword);
// get json string from url
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
jsonReturnedResult = json.get("result").toString();
//^^ I would like to take this JSONArray back to main activity
//^^ instead of pulling a single string from it.
result = jsonReturnedResult;
} catch (JSONException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String strFromDoInBg) {
mActivity.onGetResults(strFromDoInBg);
}
}
【问题讨论】:
标签: java android android-studio mobile-application