Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Plantage application avec ViewPager

Basé sur tuto bêta site du zero

    14 décembre 2012 à 14:12:05

    Bonjour,

    j'ai suivi le tuto d'androWiiid sur les ViewPager, celui-ci me permettrait de laisser tomber les listes de fragments et donc d'obtenir un code moins redondant.
    Problème, avec les list ça fonctionne et sans bah ça plante...
    Voilà le lien du tuto: http://www.siteduzero.com/tutoriel-3-7 [...] s-ecrans.html

    Je vous poste les 2 versions:

    Code avec list de fragment


    Code ViewPager



    package rapport.presse.cim;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import java.util.*;
    
    
    public class CIMPresseActivity extends FragmentActivity{
        /** Called when the activity is first created. */
    	
    	private PagerAdapter mPagerAdapter;
    	
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
    /**===============================================
     			Gestion du slide entre page
       ===============================================**/
            
            /**Création des fragments**/
            List fragments = new Vector();
            
            fragments.add(Fragment.instantiate(this,First.class.getName()));
            fragments.add(Fragment.instantiate(this,First.class.getName()));
            fragments.add(Fragment.instantiate(this,First.class.getName()));
            
            /**Adaptater pour l'affichage des fragments (liste)*/
            this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
            
            ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
            
            /** Affectation de l'adapter au ViewPager**/
            pager.setAdapter(this.mPagerAdapter);    
        }
    }
    


    Code Fragment


    package rapport.presse.cim;
    
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import rapport.presse.cim.R.id;
    
    
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.TextView;
    
    
    public class First extends Fragment{
    	
    	private TextView titre;
    	
    	final String urlView1="http://192.168.1.100/cimPresse.php?donnee=getName&country=all";
    	final String urlView2="http://192.168.1.100/cimPresse.php?donnee=getName&country=be";
    	final String urlView3="http://192.168.1.100/cimPresse.php?donnee=getName&country=lu";
    	
    	public HttpConnexion mHttpConnexion = new HttpConnexion();
    	public InputStream mInputStream;
    
    	
    	//public List<String>[] tabVarList = {mDataAll, mDataQuot, mDataHebd, mDataMens, mDataTrim, mDataAnn};
    	
    	
    	/**===============================================
    	Création des list de donnée pour chaque listView
    	===============================================**/ 
    	public List<String> mDataAll = new ArrayList<String>();
    	public List<String> mDataQuot = new ArrayList<String>();
    	public List<String> mDataHebd = new ArrayList<String>();
    	public List<String> mDataMens = new ArrayList<String>();
    	public List<String> mDataTrim = new ArrayList<String>();
    	public List<String> mDataAnn = new ArrayList<String>();
    	
    	/**===============================================
    			Déclaration des différents adaptateur
    	===============================================**/ 
    	public ArrayAdapter<String> mAdapterAll, mAdapterQuot, mAdapterHebd, mAdapterMens, mAdapterTrim, mAdapterAnn;
    	
    	/**===============================================
    		Déclaration des listView
    	===============================================**/ 
    	public ListView mListViewAll, mListViewQuot, mListViewHebd, mListViewMens, mListViewTrim, mListViewAnn;
    	
    	/**===============================================
    			Déclaration des bouttons
    	===============================================**/ 
    	public Button mButtonAll, mButtonQuot, mButtonHebd, mButtonMens, mButtonTrim, mButtonAnn;
    
    	
    	/**public Button[] tabVarButton = {mButtonAll, mButtonQuot, mButtonHebd, mButtonMens, mButtonTrim, mButtonAnn};
    	public int[] tabVarPeriode = {R.id.all, R.id.quot, R.id.hebd, R.id.mens, R.id.trim, R.id.ann};**/
    	
    	/**===================================================================
    	 		Méthode permettant de créer une nouvelle instance du fragment
    	   ===================================================================**/
    	/**public static First newInstance(String chaine) {
    		First fragment = new First();
    		Bundle args = new Bundle();
    		args.putString("KEY_STRING", chaine);
    		fragment.setArguments(args);
    		return fragment;
    	}**/
    	
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    		View v= inflater.inflate(R.layout.first, container, false);      
    		
    		/**=======================================================
    		Appel des fonction asynchrone pour remplir les adaptateurs
    		=======================================================**/ 
    		new AsyncDownloadAll().execute(urlView1, "periode", "allPeriode"); //Ligne changée
    		new AsyncDownloadQuot().execute(urlView1, "periode", "daily");
    		new AsyncDownloadHebd().execute(urlView1, "periode", "weekly");
    		new AsyncDownloadMens().execute(urlView1, "periode", "monthly");
    		new AsyncDownloadTrim().execute(urlView1, "periode", "quarterly");
    		new AsyncDownloadAnn().execute(urlView1, "periode", "annual");
    		
    		
    		
    		
    		/**===============================================
    				Création des adaptateurs
    		===============================================**/ 
    		mAdapterAll = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataAll);
    		mAdapterQuot = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataQuot);
    		mAdapterHebd= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataHebd);
    		mAdapterMens= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataMens);
    		mAdapterTrim= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataTrim);
    		mAdapterAnn= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataAnn);
    		
    		
            /**===============================================
    				Appel des layouts des boutons
    		===============================================**/ 
    		//récupération des Boutons
    		mButtonAll = (Button) v.findViewById(R.id.all);
    		mButtonQuot= (Button) v.findViewById(R.id.quot);
    		mButtonHebd = (Button)v.findViewById(R.id.hebd);
    		mButtonMens = (Button)v.findViewById(R.id.mens);
    		mButtonTrim = (Button)v.findViewById(R.id.trim);
    		mButtonAnn = (Button)v.findViewById(R.id.ann);
    		
    		/**for(int i=0; i==tabVarButton.length; i++){
    			tabVarButton[i] = (Button) v.findViewById(tabVarPeriode[i]);
    		}**/
    		
    		/**===============================================
    				Appel des layouts des listView
    		===============================================**/ 
    		mListViewAll = (ListView) v.findViewById(R.id.ListViewAll);
    		mListViewQuot = (ListView) v.findViewById(R.id.ListViewQuot);
    		mListViewHebd = (ListView) v.findViewById(R.id.ListViewHebd);
    		mListViewMens = (ListView) v.findViewById(R.id.ListViewMens);
    		mListViewTrim = (ListView) v.findViewById(R.id.ListViewTrim);
    		mListViewAnn = (ListView) v.findViewById(R.id.ListViewAnn);
    		
    		/**===============================================
    			Gestion de l'affichage des listView
    		===============================================**/ 
    		mListViewAll.setVisibility(View.GONE);
            mListViewQuot.setVisibility(View.GONE);   
    		mListViewHebd.setVisibility(View.GONE);
    		mListViewMens.setVisibility(View.GONE);
    		mListViewTrim.setVisibility(View.GONE);
    		mListViewAnn.setVisibility(View.GONE);
    		
    		/**===============================================
    	 		On lie les listView à leur adaptateur
    		===============================================**/ 
    		mListViewAll.setAdapter(mAdapterAll);
    		mListViewQuot.setAdapter(mAdapterQuot);
    		mListViewHebd.setAdapter(mAdapterHebd);
    		mListViewMens.setAdapter(mAdapterMens);
    		mListViewTrim.setAdapter(mAdapterTrim);
    		mListViewAnn.setAdapter(mAdapterAnn);	
    		
    		 /**===============================================
    				Gestion des cliques pour les boutons
    		===============================================**/ 	
    		mButtonAll.setOnClickListener (new View.OnClickListener() {			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				
    				if(mListViewAll.isShown()){
    					mListViewAll.setVisibility(View.GONE);
    				}
    				else{
    					mListViewAll.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonQuot.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewQuot.isShown()){
    					mListViewQuot.setVisibility(View.GONE);
    				}
    				else{
    					mListViewQuot.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonHebd.setOnClickListener(new View.OnClickListener() {	
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewHebd.isShown()){
    					mListViewHebd.setVisibility(View.GONE);
    				}
    				else{
    					mListViewHebd.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonMens.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewMens.isShown()){
    					mListViewMens.setVisibility(View.GONE);
    				}
    				else{
    					mListViewMens.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonTrim.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewTrim.isShown()){
    					mListViewTrim.setVisibility(View.GONE);
    				}
    				else{
    					mListViewTrim.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonAnn.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewAnn.isShown()){
    					mListViewAnn.setVisibility(View.GONE);
    				}
    				else{
    					mListViewAnn.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    
    		
    		/**===============================================
     			Gestion des cliques dans les listView
    		===============================================**/ 
    		mListViewAll.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataAll.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewQuot.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataQuot.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewHebd.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataHebd.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewMens.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataMens.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewTrim.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataTrim.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewAnn.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataAnn.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		return v;
    	}
    
    	/**==================================================================================
    		Class permettant le chargement des données en asynchrone pour chaque adaptateur
    	==================================================================================**/ 
    	public class AsyncDownloadAll extends AsyncTask<String, Void, List<String>>{ //Ligne et structure modifiée
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2]; //Ligne modifiée
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode); //Ligne modifiée
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataAll = mHttpConnexion.parseJsonFile(res);
    			return mDataAll;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (result != null){
    				mDataAll=result;
    				mAdapterAll.clear();
    				for (String str : result){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i) // Ligne modifiée
    					mAdapterAll.add(str);
    				}
    				mAdapterAll.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	public class AsyncDownloadQuot extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataQuot = mHttpConnexion.parseJsonFile(res);
    			return mDataQuot;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterQuot.clear();
    				for (String str : result){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i)
    					mAdapterQuot.add(str);
    				}
    				mAdapterQuot.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	
    	public class AsyncDownloadHebd extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataHebd = mHttpConnexion.parseJsonFile(res);
    			return mDataHebd;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterHebd.clear();
    				for (String str : result){
    					mAdapterHebd.add(str);
    				}
    				mAdapterHebd.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	
    	public class AsyncDownloadMens extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataMens = mHttpConnexion.parseJsonFile(res);
    			return mDataMens;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterMens.clear();
    				for (String str : result){
    					mAdapterMens.add(str);
    				}
    				mAdapterMens.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	
    	public class AsyncDownloadTrim extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataTrim = mHttpConnexion.parseJsonFile(res);
    			return mDataTrim;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterTrim.clear();
    				for (String str : result){
    					mAdapterTrim.add(str);
    				}
    				mAdapterTrim.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	
    	public class AsyncDownloadAnn extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataAnn = mHttpConnexion.parseJsonFile(res);
    			return mDataAnn;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterAnn.clear();
    				for (String str : result){
    					mAdapterAnn.add(str);
    				}
    				mAdapterAnn.notifyDataSetChanged();
    			}
    		}
    	}
    }
    

    Code adapter



    package rapport.presse.cim;
    
    import java.util.List;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    
    //On fournit à l'adapter la liste des fragments à afficher
    public class MyPagerAdapter extends FragmentPagerAdapter {
    	
    	private final List fragments;
    
    	public MyPagerAdapter(FragmentManager fm, List fragments) {
    		super(fm);
    		this.fragments = fragments;
    	}
    
    	@Override
    	public Fragment getItem(int position) {
    		return (Fragment) this.fragments.get(position);
    	}
    
    	@Override
    	public int getCount() {
    		return this.fragments.size();
    	}
    
    }
    


    Code selon le tuto d'AndroWiiid


    ViewPager


    package rapport.presse.cim;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import java.util.*;
    
    
    public class CIMPresseActivity extends FragmentActivity{
        /** Called when the activity is first created. */
    	
    	private PagerAdapter mPagerAdapter;
    	
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
    /**===============================================
     			Gestion du slide entre page
       ===============================================**/
            
            /**Création des fragments**/
            /**List fragments = new Vector();
            
            fragments.add(Fragment.instantiate(this,First.class.getName()));
            fragments.add(Fragment.instantiate(this,First.class.getName()));
            fragments.add(Fragment.instantiate(this,First.class.getName()));**/
            
            /**Adaptater pour l'affichage des fragments (liste)*/
           // this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
            this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager());
            
            ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
            
            /** Affectation de l'adapter au ViewPager**/
            pager.setAdapter(this.mPagerAdapter);    
        }
    }
    

    Fragment



    package rapport.presse.cim;
    
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import rapport.presse.cim.R.id;
    
    
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.TextView;
    
    
    public class First extends Fragment{
    	
    	public static First newInstance(String chaine) {
    		First fragment = new First();
    		Bundle args = new Bundle();
    		args.putString("KEY_STRING", chaine);
    		fragment.setArguments(args);
    		return fragment;
    	}
    	
    	private TextView titre;
    	
    	final String urlView1="http://192.168.1.100/cimPresse.php?donnee=getName&country=all";
    	final String urlView2="http://192.168.1.100/cimPresse.php?donnee=getName&country=be";
    	final String urlView3="http://192.168.1.100/cimPresse.php?donnee=getName&country=lu";
    	
    	public HttpConnexion mHttpConnexion = new HttpConnexion();
    	public InputStream mInputStream;
    	
    	
    
    	
    	//public List<String>[] tabVarList = {mDataAll, mDataQuot, mDataHebd, mDataMens, mDataTrim, mDataAnn};
    	
    	
    	/**===============================================
    	Création des list de donnée pour chaque listView
    	===============================================**/ 
    	public List<String> mDataAll = new ArrayList<String>();
    	public List<String> mDataQuot = new ArrayList<String>();
    	public List<String> mDataHebd = new ArrayList<String>();
    	public List<String> mDataMens = new ArrayList<String>();
    	public List<String> mDataTrim = new ArrayList<String>();
    	public List<String> mDataAnn = new ArrayList<String>();
    	
    	/**===============================================
    			Déclaration des différents adaptateur
    	===============================================**/ 
    	public ArrayAdapter<String> mAdapterAll, mAdapterQuot, mAdapterHebd, mAdapterMens, mAdapterTrim, mAdapterAnn;
    	
    	/**===============================================
    		Déclaration des listView
    	===============================================**/ 
    	public ListView mListViewAll, mListViewQuot, mListViewHebd, mListViewMens, mListViewTrim, mListViewAnn;
    	
    	/**===============================================
    			Déclaration des bouttons
    	===============================================**/ 
    	public Button mButtonAll, mButtonQuot, mButtonHebd, mButtonMens, mButtonTrim, mButtonAnn;
    
    	
    	/**public Button[] tabVarButton = {mButtonAll, mButtonQuot, mButtonHebd, mButtonMens, mButtonTrim, mButtonAnn};
    	public int[] tabVarPeriode = {R.id.all, R.id.quot, R.id.hebd, R.id.mens, R.id.trim, R.id.ann};**/	
    	
    	
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    		View v= inflater.inflate(R.layout.first, container, false); 
    		
    		titre = (TextView) v.findViewById(R.id.fragmentTitle);
    		Bundle args = getArguments();
    		titre.setText(args.getString("KEY_STRING"));
    		
    		/**=======================================================
    		Appel des fonction asynchrone pour remplir les adaptateurs
    		=======================================================**/ 
    		new AsyncDownloadAll().execute(urlView1, "periode", "allPeriode"); //Ligne changée
    		new AsyncDownloadQuot().execute(urlView1, "periode", "daily");
    		new AsyncDownloadHebd().execute(urlView1, "periode", "weekly");
    		new AsyncDownloadMens().execute(urlView1, "periode", "monthly");
    		new AsyncDownloadTrim().execute(urlView1, "periode", "quarterly");
    		new AsyncDownloadAnn().execute(urlView1, "periode", "annual");
    		
    		
    		
    		
    		/**===============================================
    				Création des adaptateurs
    		===============================================**/ 
    		mAdapterAll = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataAll);
    		mAdapterQuot = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataQuot);
    		mAdapterHebd= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataHebd);
    		mAdapterMens= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataMens);
    		mAdapterTrim= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataTrim);
    		mAdapterAnn= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataAnn);
    		
    		
            /**===============================================
    				Appel des layouts des boutons
    		===============================================**/ 
    		//récupération des Boutons
    		mButtonAll = (Button) v.findViewById(R.id.all);
    		mButtonQuot= (Button) v.findViewById(R.id.quot);
    		mButtonHebd = (Button)v.findViewById(R.id.hebd);
    		mButtonMens = (Button)v.findViewById(R.id.mens);
    		mButtonTrim = (Button)v.findViewById(R.id.trim);
    		mButtonAnn = (Button)v.findViewById(R.id.ann);
    		
    		/**for(int i=0; i==tabVarButton.length; i++){
    			tabVarButton[i] = (Button) v.findViewById(tabVarPeriode[i]);
    		}**/
    		
    		/**===============================================
    				Appel des layouts des listView
    		===============================================**/ 
    		mListViewAll = (ListView) v.findViewById(R.id.ListViewAll);
    		mListViewQuot = (ListView) v.findViewById(R.id.ListViewQuot);
    		mListViewHebd = (ListView) v.findViewById(R.id.ListViewHebd);
    		mListViewMens = (ListView) v.findViewById(R.id.ListViewMens);
    		mListViewTrim = (ListView) v.findViewById(R.id.ListViewTrim);
    		mListViewAnn = (ListView) v.findViewById(R.id.ListViewAnn);
    		
    		/**===============================================
    			Gestion de l'affichage des listView
    		===============================================**/ 
    		mListViewAll.setVisibility(View.GONE);
            mListViewQuot.setVisibility(View.GONE);   
    		mListViewHebd.setVisibility(View.GONE);
    		mListViewMens.setVisibility(View.GONE);
    		mListViewTrim.setVisibility(View.GONE);
    		mListViewAnn.setVisibility(View.GONE);
    		
    		/**===============================================
    	 		On lie les listView à leur adaptateur
    		===============================================**/ 
    		mListViewAll.setAdapter(mAdapterAll);
    		mListViewQuot.setAdapter(mAdapterQuot);
    		mListViewHebd.setAdapter(mAdapterHebd);
    		mListViewMens.setAdapter(mAdapterMens);
    		mListViewTrim.setAdapter(mAdapterTrim);
    		mListViewAnn.setAdapter(mAdapterAnn);	
    		
    		 /**===============================================
    				Gestion des cliques pour les boutons
    		===============================================**/ 	
    		mButtonAll.setOnClickListener (new View.OnClickListener() {			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				
    				if(mListViewAll.isShown()){
    					mListViewAll.setVisibility(View.GONE);
    				}
    				else{
    					mListViewAll.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonQuot.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewQuot.isShown()){
    					mListViewQuot.setVisibility(View.GONE);
    				}
    				else{
    					mListViewQuot.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonHebd.setOnClickListener(new View.OnClickListener() {	
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewHebd.isShown()){
    					mListViewHebd.setVisibility(View.GONE);
    				}
    				else{
    					mListViewHebd.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonMens.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewMens.isShown()){
    					mListViewMens.setVisibility(View.GONE);
    				}
    				else{
    					mListViewMens.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonTrim.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewTrim.isShown()){
    					mListViewTrim.setVisibility(View.GONE);
    				}
    				else{
    					mListViewTrim.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		mButtonAnn.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewAnn.isShown()){
    					mListViewAnn.setVisibility(View.GONE);
    				}
    				else{
    					mListViewAnn.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    
    		
    		/**===============================================
     			Gestion des cliques dans les listView
    		===============================================**/ 
    		mListViewAll.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataAll.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewQuot.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataQuot.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewHebd.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataHebd.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewMens.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataMens.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewTrim.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataTrim.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		
    		mListViewAnn.setOnItemClickListener(new OnItemClickListener(){
    
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    				// TODO Auto-generated method stub
    				String choix = mDataAnn.get(position);
    				Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
    				mObjetBundle.putString("choix", choix);
    				Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
    				t.putExtras(mObjetBundle);
    				startActivity(t);
    				
    		}});
    		return v;
    	}
    
    	/**==================================================================================
    		Class permettant le chargement des données en asynchrone pour chaque adaptateur
    	==================================================================================**/ 
    	public class AsyncDownloadAll extends AsyncTask<String, Void, List<String>>{ //Ligne et structure modifiée
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2]; //Ligne modifiée
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode); //Ligne modifiée
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataAll = mHttpConnexion.parseJsonFile(res);
    			return mDataAll;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (result != null){
    				mDataAll=result;
    				mAdapterAll.clear();
    				for (String str : result){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i) // Ligne modifiée
    					mAdapterAll.add(str);
    				}
    				mAdapterAll.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	public class AsyncDownloadQuot extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataQuot = mHttpConnexion.parseJsonFile(res);
    			return mDataQuot;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterQuot.clear();
    				for (String str : result){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i)
    					mAdapterQuot.add(str);
    				}
    				mAdapterQuot.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	
    	public class AsyncDownloadHebd extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataHebd = mHttpConnexion.parseJsonFile(res);
    			return mDataHebd;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterHebd.clear();
    				for (String str : result){
    					mAdapterHebd.add(str);
    				}
    				mAdapterHebd.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	
    	public class AsyncDownloadMens extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataMens = mHttpConnexion.parseJsonFile(res);
    			return mDataMens;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterMens.clear();
    				for (String str : result){
    					mAdapterMens.add(str);
    				}
    				mAdapterMens.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	
    	public class AsyncDownloadTrim extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataTrim = mHttpConnexion.parseJsonFile(res);
    			return mDataTrim;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterTrim.clear();
    				for (String str : result){
    					mAdapterTrim.add(str);
    				}
    				mAdapterTrim.notifyDataSetChanged();
    			}
    		}
    		
    	}
    	
    	public class AsyncDownloadAnn extends AsyncTask<String, Void, List<String>>{
    
    		@Override
    		protected List<String> doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String key= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    			String res = mHttpConnexion.convertToString(mInputStream);
    			mDataAnn = mHttpConnexion.parseJsonFile(res);
    			return mDataAnn;
    		}
    		
    		@Override
    		protected void onPostExecute(List<String> result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				mAdapterAnn.clear();
    				for (String str : result){
    					mAdapterAnn.add(str);
    				}
    				mAdapterAnn.notifyDataSetChanged();
    			}
    		}
    	}
    }
    


    Adapter


    package rapport.presse.cim;
    
    import java.util.List;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    
    //On fournit à l'adapter la liste des fragments à afficher
    public class MyPagerAdapter extends FragmentPagerAdapter {
    	
    	//private final List fragments;
    
    	//public MyPagerAdapter(FragmentManager fm, List fragments) {
    	public MyPagerAdapter(FragmentManager fm) {
    		super(fm);
    		//this.fragments = fragments;
    	}
    
    	@Override
    	public Fragment getItem(int position) {
    		//return (Fragment) this.fragments.get(position);
    		switch(position) {
    		case 1: return First.newInstance("Je suis le premier écran !");
    		case 2: return First.newInstance("Je suis le second écran !");
    		case 3: return First.newInstance("Je suis le troisième écran !");
    		}
    		return null;
    	}
    
    	@Override
    	public int getCount() {
    		//return this.fragments.size();
    		return 3;
    	}
    
    }
    


    LogCat


    12-12 11:03:37.901: I/dalvikvm(576): threadid=3: reacting to signal 3
    12-12 11:03:38.221: I/dalvikvm(576): Wrote stack traces to '/data/anr/traces.txt'
    12-12 11:03:38.431: I/dalvikvm(576): threadid=3: reacting to signal 3
    12-12 11:03:38.502: I/dalvikvm(576): Wrote stack traces to '/data/anr/traces.txt'
    12-12 11:03:38.941: I/dalvikvm(576): threadid=3: reacting to signal 3
    12-12 11:03:38.992: I/dalvikvm(576): Wrote stack traces to '/data/anr/traces.txt'
    12-12 11:03:39.021: D/AndroidRuntime(576): Shutting down VM
    12-12 11:03:39.040: W/dalvikvm(576): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
    12-12 11:03:39.051: E/AndroidRuntime(576): FATAL EXCEPTION: main
    12-12 11:03:39.051: E/AndroidRuntime(576): java.lang.NullPointerException
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:347)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:342)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.support.v4.view.ViewPager.populate(ViewPager.java:783)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.view.View.measure(View.java:12723)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.view.View.measure(View.java:12723)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.view.View.measure(View.java:12723)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.view.View.measure(View.java:12723)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.os.Handler.dispatchMessage(Handler.java:99)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.os.Looper.loop(Looper.java:137)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at android.app.ActivityThread.main(ActivityThread.java:4424)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at java.lang.reflect.Method.invokeNative(Native Method)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at java.lang.reflect.Method.invoke(Method.java:511)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    12-12 11:03:39.051: E/AndroidRuntime(576):         at dalvik.system.NativeStart.main(Native Method)
    12-12 11:03:39.460: I/dalvikvm(576): threadid=3: reacting to signal 3
    12-12 11:03:39.520: I/dalvikvm(576): Wrote stack traces to '/data/anr/traces.txt'
    12-12 11:03:39.960: I/dalvikvm(576): threadid=3: reacting to signal 3
    12-12 11:03:40.010: I/dalvikvm(576): Wrote stack traces to '/data/anr/traces.txt'
    12-12 11:03:40.130: I/dalvikvm(576): threadid=3: reacting to signal 3
    12-12 11:03:40.180: I/dalvikvm(576): Wrote stack traces to '/data/anr/traces.txt'
    12-12 11:08:39.852: I/Process(576): Sending signal. PID: 576 SIG: 9


    Si quelqu'un pourrait me dépanner ça serait vraiment bien, et ça me sortirait pas mal de la merde aussi ^^
    • Partager sur Facebook
    • Partager sur Twitter

    [Android] Plantage application avec ViewPager

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown