Autore Topic: [Risolto] SharedPreferences in Fragment  (Letto 373 volte)

Offline jumpy83

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
[Risolto] SharedPreferences in Fragment
« il: 15 Dicembre 2015, 17:11:40 CET »
0
Ciao a tutti.
Nuovo giorno e ,ahimè, nuovo problema...
Ho questa classe

Codice (Java): [Seleziona]
public class RubricaFragment extends Fragment {
 
    public RubricaFragment() {
        // Required empty public constructor
    }
 
    SharedPreferences sp;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        boolean isFirstTime = sp.getBoolean("never_login", true);
        if (isFirstTime) {
            //Carichiamo il primo layout
            final View view = inflater.inflate(R.layout.fragment_rubrica, container, false);
            sp = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
            Button accedi = (Button) view.findViewById(R.id.accedi);
            final EditText password = (EditText) view.findViewById(R.id.editText2);
 
            accedi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String ps = password.getText().toString();
 
                    if (ps.equals("pass")) {
                        SharedPreferences.Editor editor = sp.edit();//Prendiamo l'editor
                        editor.putBoolean("never_login", false);
                        editor.putString("nome_utente", ps);
                        editor.commit();//salviamo le modifiche
                        Intent i = new Intent(getContext(), MainActivityRubrica.class);
                        startActivity(i);
                    } else {
                        Toast.makeText(getContext(), "Non hai l'autorizzazione a procedere", Toast.LENGTH_LONG).show();
                    }
                }
            });
            return view;
        }
        else
        {
            //Non è la prima volta, carichiamo l'altro layout
            final View view2 = inflater.inflate(R.layout.activity_main_rubrica, container, false);
            return view2;
        }
 
    }

in cui mi viene segnalato un FATAL EXCEPTION: main java.lang.NullPointerException alla riga
Codice (Java): [Seleziona]
boolean isFirstTime = sp.getBoolean("never_login", true);il logcat dice questo
Codice: [Seleziona]
at it.fontanagianpaolo.www.progetto.RubricaFragment.onCreateView(RubricaFragment.java:36)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

Qualcuno ha idea di cosa genera il NullPointer?

Non riesco a capirlo.

Grazie a coloro che vorranno rispondere :)

P.s. c'è da dire questa parte della richiesta password e procedimento alla view successiva (se la password è corretta) mi funziona tranquillamente. Il problema mi sorge quando lo metto dentro il fragment.
« Ultima modifica: 16 Dicembre 2015, 23:21:42 CET da jumpy83 »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 665
  • Respect: +143
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:SharedPreferences in Fragment
« Risposta #1 il: 16 Dicembre 2015, 10:40:36 CET »
+1
Questo

Codice (Java): [Seleziona]
sp = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
deve essere prima di questo

Codice (Java): [Seleziona]
boolean isFirstTime = sp.getBoolean("never_login", true);
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline jumpy83

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
Re:SharedPreferences in Fragment
« Risposta #2 il: 16 Dicembre 2015, 23:20:44 CET »
0
Questo

Codice (Java): [Seleziona]
sp = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
deve essere prima di questo

Codice (Java): [Seleziona]
boolean isFirstTime = sp.getBoolean("never_login", true);

Funziona.
Grazie