当我试图从该数组创建一个 ListView 时,我试图将一个数组从我的 AsyncTask 返回到我的 Activity。不幸的是,程序会出现错误,因为它不允许我返回数组。我的代码如下:
主菜单类:
public class MainMenu extends Activity {
String username;
public String[] returnValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_menu);
username ="user1";
if (checkInternetConnection()) {
try {
MainAsyncTask mat = new MainAsyncTask(MainMenu.this);
mat.execute(username);
} catch (Exception e) {
e.printStackTrace();
}
} else {
Toast.makeText(getApplicationContext(),"No internet connection. Please try again later",Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main_menu, menu);
return true;
}
private boolean checkInternetConnection() {
ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}}
主异步任务:
public class MainAsyncTask extends AsyncTask<String, Void, Integer> {
private MainMenu main;
private String responseText, http;
private Ipaddress ipaddr = new Ipaddress(http);
private Context context;
public MainAsyncTask(MainMenu main) {
this.main = main;
}
protected Integer doInBackground(String... arg0) {
int responseCode = 0;
try {
HttpClient client = new HttpClient(main.getApplicationContext());
Log.e("SE3", ipaddr.getIpAddress());
HttpPost httpPost = new HttpPost(ipaddr.getIpAddress()
+ "/MainServlet");
List<NameValuePair> nvp = new ArrayList<NameValuePair>();
JSONObject json = new JSONObject();
json.put("username", arg0[0]);
Log.e("SE3", arg0[0]);
nvp.add(new BasicNameValuePair("data", json.toString()));
httpPost.setEntity(new UrlEncodedFormEntity(nvp));
HttpResponse response = client.execute(httpPost);
if (response != null) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(response.getEntity()
.getContent()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
responseText = sb.toString();
} catch (IOException e) {
Log.e("SE3", "IO Exception in reading from stream.");
responseText = "Error";
}
} else {
responseText = "Error";
}
} else {
responseText = "Response is null";
}
} catch (Exception e) {
responseCode = 408;
responseText = "Response is null";
e.printStackTrace();
}
return responseCode;
}
protected void onPostExecute(Integer result) {
if (result == 408 || responseText.equals("Error")
|| responseText.equals("Response is null")) {
Toast.makeText(main.getApplicationContext(),
"An error has occured, please try again later.",
Toast.LENGTH_SHORT).show();
} else {
JSONObject jObj;
try {
jObj = new JSONObject(responseText);
String folderString = jObj.getString("folder");
String [] folders = folderString.split(";");
//I need to return folders back to MainMenu Activity
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
我的问题是我应该如何修改,以便我能够在我的连接保持不变的情况下读取我的 Array。