2013-07-18 6 views
-2

안녕하세요 저는 안드로이드 초보자입니다. 잘 모르겠지만, 그 후에는 계속해서 응용 프로그램이 멈추고 로그에 오류가 발생했음을 깨달았습니다. 예외 : AsyncTask # 1안드로이드 치명적인 예외 : AsyncTask # 1

this.listeActualites.add(oActualite); 

여기서, 도움 덕분에 나는 그 여기 ...

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); 

       } 

      } 

     } 
+2

치명적인 예외는 무엇입니까? 우리가 도울 수 있도록 스택 트레이스를주세요. java.lang.RuntimeException가 – Geros

+0

는 : doInBackground 실행 중에 에러가 발생한() java.util.concurrent.FutureTask $ Sync.innerSetException에서 android.os.AsyncTask $ 3.done (AsyncTask.java:278) (FutureTask에서 . java : 273) – Predator

답변

0

나는 당신이 null 객체에 add를 호출 할 수 있다고 생각리스트 뷰에 MySQL 데이터베이스의 내용을 추출해야 listeActualites은 지역의 저를 언급하고 있습니다. mber가 AsyncTask이고 초기화하지 않으 셨습니다.

+0

답장을 보내 주셔서 감사합니다. 새 필드에서 더 자세히 설명 드리겠습니다. – Predator

+0

ArrayList와 같은 초기화 된 선언으로 ListeActualites 멤버를 초기화하십시오. listeActualites = new ArrayList 오류가 있는지 확인하십시오. 여전히 거기에. AsyncTask의 멤버로 정의 된 listeActualites에 대해이 작업을 수행해야합니다 (동일한 이름의 멤버가 활동에도 정의되어 있음을 알기 때문에). –

+0

대단히 감사합니다;) – Predator

관련 문제