Drakilster Posté(e) 10 novembre 2012 Share Posté(e) 10 novembre 2012 Salut,Voila j'ai réediter mon poste,pour que vous me compreniez mieux. Dans mon application j'ai 1 page Principal avec Une Tabhost et un viewpager. J'ai 4 tabs fragment nommée 1-Lecteur 2-News 3-Tchat 4-Contact. J'ai un problème au niveaux que quand je passe d'un layout a un autre. C'est a Dire : 1-Je suis dans lecteur dans lecteur ce trouve une image avec un boutonPlay dessus. 2-J'appuie sur cette image du coups il affiche une nouvelle Image boutonstop et chargement ci-dessous. 3-Je change de page je vais à Tchat donc deux layout plus loin. 4-Je retourne a Lecteur mon image et redevenue BoutonPlay. Voila exactement mon probleme. Par contre j'ai remarque que c'est en faite le OnCreateView qui s'active a chaque fois je fait plus de deux layout. Deuxième chose si je bouge a 1 layout donc News ben la page reste identique. maitenant voici les codes. Pour la page pincipal : public class PagePrincipal extends FragmentActivity implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener { private TabHost mTabHost; private ViewPager mViewPager; private HashMap<String, TabInfo> mapTabInfo = new HashMap<String, PagePrincipal.TabInfo>(); private PagerAdapter mPagerAdapter; /** * * @author mwho * Maintains extrinsic info of a tab's construct */ private class TabInfo { private String tag; private Class<?> clss; private Bundle args; private Fragment fragment; TabInfo(String tag, Class<?> clazz, Bundle args) { this.tag = tag; this.clss = clazz; this.args = args; } } /** * A simple factory that returns dummy views to the Tabhost * @author mwho */ class TabFactory implements TabContentFactory { private final Context mContext; /** * @param context */ public TabFactory(Context context) { mContext = context; } /** (non-Javadoc) * @see android.widget.TabHost.TabContentFactory#createTabContent(java.lang.String) */ public View createTabContent(String tag) { View v = new View(mContext); v.setMinimumWidth(0); v.setMinimumHeight(0); return v; } } /** (non-Javadoc) * @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle) */ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Inflate the layout setContentView(R.layout.pageprincipal); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Initialise the TabHost this.initialiseTabHost(savedInstanceState); if (savedInstanceState != null) { mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab")); //set the tab as per the saved state } // Intialise ViewPager this.intialiseViewPager(); } /** (non-Javadoc) * @see android.support.v4.app.FragmentActivity#onSaveInstanceState(android.os.Bundle) */ protected void onSaveInstanceState(Bundle outState) { outState.putString("tab", mTabHost.getCurrentTabTag()); //save the tab selected super.onSaveInstanceState(outState); } /** * Initialise ViewPager */ private void intialiseViewPager() { List<Fragment> fragments = new Vector<Fragment>(); fragments.add(Fragment.instantiate(this, PageLecteur.class.getName())); fragments.add(Fragment.instantiate(this, PageNews.class.getName())); fragments.add(Fragment.instantiate(this, PageTchat.class.getName())); fragments.add(Fragment.instantiate(this, PageContact.class.getName())); mPagerAdapter = new MesPagesViews(super.getSupportFragmentManager(), fragments); // mViewPager = (ViewPager)super.findViewById(R.id.viewpager); mViewPager.setAdapter(this.mPagerAdapter); mViewPager.setOnPageChangeListener(this); } /** * Initialise the Tab Host */ private void initialiseTabHost(Bundle args) { mTabHost = (TabHost)findViewById(android.R.id.tabhost); mTabHost.setup(); TabInfo tabInfo = null; Resources res = getResources(); PagePrincipal.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Tab1").setIndicator("Radio",res.getDrawable(R.drawable.btplay)), ( tabInfo = new TabInfo("Tab1", PageLecteur.class, args))); this.mapTabInfo.put(tabInfo.tag, tabInfo); PagePrincipal.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Tab2").setIndicator("Nouveauté",res.getDrawable(R.drawable.newslogo)), ( tabInfo = new TabInfo("Tab2", PageNews.class, args))); this.mapTabInfo.put(tabInfo.tag, tabInfo); PagePrincipal.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Tab3").setIndicator("Tchat",res.getDrawable(R.drawable.logotchat)), ( tabInfo = new TabInfo("Tab3", PageTchat.class, args))); this.mapTabInfo.put(tabInfo.tag, tabInfo); PagePrincipal.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Tab4").setIndicator("Contact",res.getDrawable(R.drawable.contactlogo)), ( tabInfo = new TabInfo("Tab4", PageContact.class, args))); this.mapTabInfo.put(tabInfo.tag, tabInfo); // Default to first tab //this.onTabChanged("Tab1"); // mTabHost.setOnTabChangedListener(this); } /** * Add Tab content to the Tabhost * @param activity * @param tabHost * @param tabSpec * @param clss * @param args */ private static void AddTab(PagePrincipal activity, TabHost tabHost, TabHost.TabSpec tabSpec, TabInfo tabInfo) { // Attach a Tab view factory to the spec tabSpec.setContent(activity.new TabFactory(activity)); tabHost.addTab(tabSpec); } /** (non-Javadoc) * @see android.widget.TabHost.OnTabChangeListener#onTabChanged(java.lang.String) */ public void onTabChanged(String tag) { //TabInfo newTab = this.mapTabInfo.get(tag); int pos = this.mTabHost.getCurrentTab(); this.mViewPager.setCurrentItem(pos); } /* (non-Javadoc) * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageScrolled(int, float, int) */ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageSelected(int) */ public void onPageSelected(int position) { // TODO Auto-generated method stub this.mTabHost.setCurrentTab(position); } /* (non-Javadoc) * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageScrollStateChanged(int) */ public void onPageScrollStateChanged(int state) { // TODO Auto-generated method stub } } Voici le code du lecteur : public class PageLecteur extends Fragment implements onclickListener { ImageView Lecteur; Thread readingThread; MediaPlayer mediaPlayer; Context LecteurContext; static ProgressBar Chargement1; static TextView Chargement2; static Context context; int LecteurOnOff; static PageLecteur pageFragment; private String URL_radio="http://5.39.61.109:8500"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = getActivity().getApplicationContext(); LecteurOnOff=3; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.pagelecteur, container, false); Chargement1=(ProgressBar)view.findViewById(R.id.BarCharge); Chargement2=(TextView)view.findViewById(R.id.AffCharge); Lecteur=(ImageView)view.findViewById(R.id.BtPlayer); Lecteur.setonclickListener(this); Toast.makeText(context, "Viewlecteur", Toast.LENGTH_SHORT).show(); return view; } public void onclick(View v) { // TODO Stub de la méthode généré automatiquement if(v == Lecteur){ if (LecteurOnOff == 1){ Lecteur.setImageResource(R.drawable.btplay); mediaPlayer.stop(); LecteurOnOff =0; Chargement1.setVisibility(View.INVISIBLE); Chargement2.setVisibility(View.INVISIBLE); } else{ LecteurOnOff =1; Lecteur.setImageResource(R.drawable.btstop); Chargement1.setVisibility(View.VISIBLE); Chargement2.setVisibility(View.VISIBLE); readingThread = new Thread(LancementLecteur); readingThread.start(); } } } private Runnable LancementLecteur = new Runnable() { public void run() { mediaPlayer = MediaPlayer.create(context,Uri.parse(URL_radio)); mediaPlayer.start(); } }; } Voila merci d'avance pour votre aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ygort Posté(e) 14 novembre 2012 Share Posté(e) 14 novembre 2012 1-Je suis dans lecteur dans lecteur ce trouve une image avec un boutonPlay dessus. 2-J'appuie sur cette image du coups il affiche une nouvelle Image boutonstop et chargement ci-dessous. 3-Je change de page je vais à Tchat donc deux layout plus loin. 4-Je retourne a Lecteur mon image et redevenue BoutonPlay. C'est parfaitement normal, le viewpager instancie par défaut le fragment courant ainsi que les deux fragments voisins (un à gauche et un à droite). Il te faut sauvegarder l'état de ton fragment dans le onSaveInstanceState (http://developer.and...roid.os.Bundle)) et le récupérer lors de la re-création de ton fragment. Btw, ton adapter est mal fichu. tu instancies tous tes fragments puis les injecte dedans. C'est à proscrire (pour des raisons de perfs, et pour la raison ci-dessus). Utilises plutot un FragmentStatePagerAdapter (http://developer.and...gerAdapter.html) comme ceci : public class MyAdapter extends FragmentStatePagerAdapter{ private static final int NUM_ITEMS = 4; @Override public int getCount(){ return NUM_ITEMS; } @Override public Fragment getItem(int position){ switch(position){ case 1: return Fragment.instantiate(this, PageLecteur.class.getName()); case 2: return Fragment.instantiate(this, PageNews.class.getName()); case 3: return Fragment.instantiate(this, PageTchat.class.getName()); case 4: return Fragment.instantiate(this, PageContact.class.getName()); } } } J'espere que ça t'aidera, n'hésite pas à me poser des questions ou à me tweeter si tu as des soucis ou si tu veux des détails. A+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.