嗨,我初学到android,我不知道很好习惯asychtask但是之后我意识到我继续进行,应用程序强制停止和日志中的错误FATAL EXCEPTION:AsyncTask#1,感谢您的帮助我需要在listview上提取mysql数据库的内容
package com.example.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class Actu_Connextion extends Activity {
Actualite oActualite;
ArrayList<Actualite> listeActualites;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acutalite_main);
int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
TextView actionBarTextView = (TextView)findViewById(actionBarTitleId);
actionBarTextView.setTextColor(Color.WHITE);
this.listeActualites = new ArrayList<Actualite>();
new DownloadTask().execute();
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.refresh, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item){ // Quand on appuis sur l/'item
switch (item.getItemId()){
case R.id.refresh: // selectionne l'item par id
return true;
case R.id.back_menu_principale: // selectionne l'item par id
Intent intent = new Intent(getBaseContext() ,MainActivity.class);
startActivity(intent);
default:
return super.onOptionsItemSelected(item);
}
}
public class DownloadTask extends AsyncTask<String, Integer, ArrayList<Actualite>>{
ArrayList<Actualite> listeActualites;
// Invoked by execute() method of this object
@Override
protected ArrayList<Actualite> doInBackground(String... jsonData) {
StringBuffer stringB = new StringBuffer("");
BufferedReader bufR = null;
try{
HttpClient client = new DefaultHttpClient();
HttpGet requete = new HttpGet();
URI uri = new URI("http://192.168.1.3/actu.php");
requete.setURI(uri);
HttpResponse reponse = client.execute(requete);
InputStream is = reponse.getEntity().getContent();
bufR = new BufferedReader(new InputStreamReader(is));
String ligneLue = bufR.readLine();
while(ligneLue != null){
stringB.append(ligneLue);
stringB.append("\n");
ligneLue = bufR.readLine();
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(bufR != null){
try{
bufR.close();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
}
try{
JSONArray jArray = new JSONArray(stringB.toString());
for(int i = 0; i<jArray.length(); i++){
oActualite = new Actualite();
oActualite.setoContenu(jArray.getJSONObject(i).getString("contenu").toString());
oActualite.setoChemin(jArray.getJSONObject(i).getString("chemin").toString());
oActualite.setoDate(jArray.getJSONObject(i).getString("date").toString());
this.listeActualites.add(oActualite);
}
}catch(JSONException jex){
jex.printStackTrace();
}
return listeActualites;
}
// Executed after the complete execution of doInBackground() method
@Override
protected void onPostExecute(ArrayList<Actualite> listeActualites){
ActualiteAdapter adapter = new ActualiteAdapter(Actu_Connextion.this, listeActualites);
ListView listeVueActualites = (ListView) findViewById(R.id.lstActualites);
listeVueActualites.setAdapter(adapter);
}
}
}
答案 0 :(得分:0)
我认为您可能会在add
对象上调用null
...就在这里:
this.listeActualites.add(oActualite);
其中listeActualites
指的是AsyncTask
的本地成员,而您永远不会初始化它。