Autore Topic: SharedPref in fragment  (Letto 730 volte)

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
SharedPref in fragment
« il: 26 Luglio 2012, 12:23:44 CEST »
0
Salve ragazzi, dal vostro tutorial ho sviluppato le sharedpref per un'activity e funzionava a meraviglia. Il problema è che ora ho dovuto aggiornare l'app e farla con i fragment. Ho messo tutto ciò che avevo riguardo il salvataggio delle preferenze nell'onclick del bottone che serve a inviare il modulo. Stando ai vari Log.i che faccio stampare riesce a salvarsi tutto. Il problema è che quando apro l'applicazione non va a recuperare nulla. Questo perchè prima nell'activity facevo l'updatePreferencesData() nell'oncreate e ora nel fragment ho l'oncreateView(), e se lo faccio all'interno di questo mi da NullPointerException.

questo è il fragmentactivity

Codice: [Seleziona]
public class PagerTabsActivity extends FragmentActivity {
        // list contains fragments to instantiate in the viewpager
        List<Fragment> fragments = new Vector<Fragment>();
        List<String> fragmentTitles = new Vector<String>();
        // page adapter between fragment list and view pager
        private PagerAdapter mPagerAdapter;
        // view pager
        private ViewPager mViewPager;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                // creating fragments and adding to list
                fragments.add(Fragment.instantiate(this, Page1Fragment.class.getName()));
                fragmentTitles.add("Profilo");
                fragments.add(Fragment.instantiate(this, Page2Fragment.class.getName()));
                fragmentTitles.add("Attiva");
                fragments.add(Fragment.instantiate(this, Page3Fragment.class.getName()));
                fragmentTitles.add("Vicino");
                //
                mViewPager = (ViewPager) findViewById(R.id.pager);
                View pagerStrip = findViewById(R.id.pagerTabStrip);
                if (pagerStrip instanceof PagerTabStrip) {
                        PagerTabStrip pagerTabStrip = (PagerTabStrip) pagerStrip;
                        pagerTabStrip.setDrawFullUnderline(true);
                        pagerTabStrip.setTabIndicatorColorResource(android.R.color.black);
                        // pagerTabStrip.setTextColor(color.white);
                } else if (pagerStrip instanceof PagerTitleStrip) {
                        PagerTitleStrip pagerTitleStrip = (PagerTitleStrip) pagerStrip;
                        pagerTitleStrip.setTextColor(getResources().getColor(android.R.color.white));
                }

                this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments, fragmentTitles);
                mViewPager.setAdapter(this.mPagerAdapter);
                mViewPager.setCurrentItem(0);
        }

}

e questo è l'onCreateView() del fragment Page1Fragment

Codice: [Seleziona]
@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

                fragView  = inflater.inflate(R.layout.profilo, container, false);

                Button button = (Button) fragView.findViewById(R.id.form_button);

                button.setOnClickListener(this);

                return fragView;
        }

nell'onclick dell'activity di Page1Fragment si svolgono le operazioni di salvataggio.. ma ripeto, quelle funzionano il problema non riesco a recuperarle al momento dell'avvio dell'app..

HELP ME PLEASE!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SharedPref in fragment
« Risposta #1 il: 26 Luglio 2012, 12:33:39 CEST »
+1
Non ho la soluzione provata e sicura al 100%, ma quello che c'è scritto nella documentazione ufficiale del Fragment risponde al tuo problema in pieno.

Fragments | Android Developers

Dalla figura sotto riportato sembra evidente che la OnCreate dell'activity è ancora in corso quando vengono chiamate la varie OnCreateView dei Fragment, per cui io come primissima prova metterei l'update nella OnStart o nella OnResume del Fragment

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Re:SharedPref in fragment
« Risposta #2 il: 26 Luglio 2012, 13:24:21 CEST »
0
Funziona alla perfezione.. sei un grande!