-2

嗨,我是 android 的初学者,我不太了解 asychtask,但之后我意识到我照常进行,应用程序被迫停止并且日志中出现错误 FATAL EXCEPTION: AsyncTask #1,感谢您的帮助,我需要提取内容列表视图上的 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);

                }

            }

        }
4

1 回答 1

0

我想你可能正在调用add一个null对象......那就是这里:

this.listeActualites.add(oActualite);

wherelisteActualites指的是本地成员,AsyncTask并且您永远不会对其进行初始化。

于 2013-07-18T01:24:01.343 回答