IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

View Pager update fragment


Sujet :

Composants graphiques Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 38
    Points : 24
    Points
    24
    Par défaut View Pager update fragment
    Salut,

    J'ai une petite question pour vous.

    J'ai actuellement une ViewPager qui contient 5 fragments

    J'ai donc le problème suivant,

    Je suis sur la page 0, qui contient un certain nombre d'information, et qui va modifier un fichier.

    Lorsque je suis sur la page 1, je souhaiterai que la modification soit pris en compte. (Cela n'est pas prit en compte).

    Lorsque je suis sur la page 2 => je souhaiterai prendre en compte les modification du fichier de la page 1.



    Aujourd'hui pour voir la modification sur la page 2, il faut que j'aille sur la page 0.



    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    public class MyPagerAdapter extends FragmentStatePagerAdapter {
     
      private final List fragments;
    	private final String path;
    		private static final String TAG = "FragmentPagerAdapter";
    		private static final boolean DEBUG = true;
    		private final FragmentManager mFragmentManager;
    		private FragmentTransaction mCurTransaction = null;
    		private Fragment mCurrentPrimaryItem = null;
    		private Context mContext = null;
     
      //On fournit à l'adapter la liste des fragments à afficher
     public MyPagerAdapter(FragmentManager fm, List fragments, String path, Context context) {
       super(fm);
    		mContext = context;
    		mFragmentManager = fm;
    		this.path = path;
    		this.fragments = fragments;
      }
     
      @Override
      public Fragment getItem(int position) {
    		Fragment frg;
    		Bundle data;
    		switch(position){
    			case 0 :
    				data = new Bundle();
    				data.putString("path", path);
    				frg = new fragment1();
    				frg.setArguments(data);
    				return frg;
    			case 1 :
    				 data = new Bundle();
    				data.putString("path",path);
    				frg = new fragment2();
    				frg.setArguments(data);
    				return frg;
    			case 2 :
    				data = new Bundle();
    				data.putString("path",path);
    				frg = new fragment3();
    				frg.setArguments(data);
    				return frg;
    			case 3 :
    				data = new Bundle();
    				data.putString("path",path);
    				frg = new fragment4();
    				frg.setArguments(data);
    				return frg;
    			case 4 :
    				data = new Bundle();
    				data.putString("path",path);
    				frg = new fragment5();
    				frg.setArguments(data);
    				return frg;
    		}
    		return null;
      }
     
    	@Override
    	public void setPrimaryItem(ViewGroup container, int position, Object object) {
    		Fragment fragment = (Fragment)object;
    		if (fragment != mCurrentPrimaryItem) {
    			if (mCurrentPrimaryItem != null) {
    				mCurrentPrimaryItem.setMenuVisibility(false);
    			}
    			if (fragment != null) {
    				fragment.setMenuVisibility(true);
    			}
    			mCurrentPrimaryItem = fragment;
    		}
    	}
    	@Override
    	public Object instantiateItem(ViewGroup container, int position){
    		if (mCurTransaction == null) {
    			mCurTransaction = mFragmentManager.beginTransaction();
    		}
     
    		// Do we already have this fragment?
    		String name = makeFragmentName(container.getId(), position);
    		Fragment fragment = mFragmentManager.findFragmentByTag(name);
    		if (fragment != null) {
    			if (DEBUG) Log.e(TAG, "Attaching item #" + position + ": f=" + fragment + "name :" +name);
    			mCurTransaction.attach(fragment);
    		} else {
    			fragment = getItem(position);
    			if (DEBUG) Log.e(TAG, "Adding item #" + position + ": f=" + fragment +"name :" +name);
    				mCurTransaction.add(container.getId(), fragment,
    					makeFragmentName(container.getId(), position));
    		}
    		if (fragment != mCurrentPrimaryItem) {
    			fragment.setMenuVisibility(false);
    		}
     
    		return fragment;
    	}
    	public int getItemPosition(Object object) {
    		return POSITION_NONE;
    	}
      @Override
      public int getCount() {
        return 5;
      }
     
      public CharSequence getPageTitle(int position, Context context) {
        String[] name_activity = context.getResources().getStringArray(R.array.SubMenu);
        return name_activity[position];
      }
     
    	@Override
    	public void finishUpdate(ViewGroup container) {
    		if (mCurTransaction != null) {
    			mCurTransaction.commitAllowingStateLoss();
    			mCurTransaction = null;
    			mFragmentManager.executePendingTransactions();
    		}
    	}
    	@Override
    	public void destroyItem(ViewGroup container, int position, Object object) {
    		if (mCurTransaction == null) {
    			mCurTransaction = mFragmentManager.beginTransaction();
    		}
    		if (DEBUG) Log.e(TAG, "Detaching item #" + position + ": f=" + object + " v=" + ((Fragment) object).getView());
    		mCurTransaction.remove((Fragment) object);
     
    	}
    	@Override
    	public boolean isViewFromObject(View view, Object object) {
    		return ((Fragment)object).getView() == view;
    	}
     
    	@Override
    	public Parcelable saveState() {
    		return null;
    	}
     
    	@Override
    	public void restoreState(Parcelable state, ClassLoader loader) {
    	}
     
    	public void startUpdate(ViewGroup container) {
     
    	}
    	private static String makeFragmentName(int viewId, int index) {
    		return "android:switcher:" + viewId + ":" + index;
    	}
    }


    Voici le code de l'adapter que j'ai.

    Je n'ai pas logcat a fournir car l'application ne crash pas, il n'y a pas de rafraichissement.

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Tu as plusieurs choix :

    Tu utilises une classe en singleton regroupant les informations en question et tu partages (donc grosso-modo : des variables globales), pas forcément le plus propre.
    Tu demandes aux pages > 1 de se raffraîchir explicitement quand tu passes dessus via un des listeners disponible. Il n'est pas possible de le faire dans le onResume, tu auras des soucis puisque qu'un ViewPager garde en mémoire 2 Fragments : le courant et "celui d'à côté".

    Ps : j'espère que les classes "fragmentX" sont mises pour l'exemple. Si non, une classe est UpperCamelCase en Java (débute par une majuscule, pas de séparateur, chaque nouveau mot commence par une majuscule). De plus, prend bien l'habitude d'utiliser des noms parlant pour s'y retrouver vite
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Merci de ta réponse,

    Oui, bien sur il s'agit de d'exemple.

    Quel type de listeners conseilles tu ?

    Ou dois-je le mettre ? (Dans le onCreate)


    Cordialement,
    KevinGiroux

Discussions similaires

  1. VIew Pager et Expandable View Android
    Par kevingiroux dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 10/08/2014, 17h40
  2. View pager : page non mise à jour
    Par grunk dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 04/05/2012, 15h34
  3. faire un update dans un datagrid view
    Par ciara dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/09/2009, 14h20
  4. GridView - Pager avec Update Panel
    Par crapouye dans le forum ASP.NET
    Réponses: 26
    Dernier message: 05/08/2008, 02h13
  5. update de la view
    Par marouane2010 dans le forum MFC
    Réponses: 3
    Dernier message: 22/08/2006, 08h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo