Preferenze condivise in android che mostrano il valore predefinito non trovato

Mi ha colpito nel memorizzare e get preferenze condivise. Quando un utente è stato registrato se tale logging è successo allora i valori devono essere memorizzati nel suo profilo solo la mia class di profilo. Non so perché sono sempre il valore di default per favore dammi un suggerimento.

Grazie in anticipo.

  • Differenza tra commit e applicazione in SharedPreferences Android
  • Android SharedPreferences, come salvare una semplice variabile int
  • Set di string SharedPreferences Android - alcune voci vengono rimosse dopo il riavvio dell'app
  • GetDefaultSharedPreferences di Android
  • Elimina il file SharedPreferences
  • Fare un'attività viene visualizzata una sola volta, quando l'applicazione viene avviata
  • Si prega di tellmesomething Di nuovo ho aggiornato il codice qui.

    public class Register extends Activity { /** * Defining layout items. **/ EditText mFirstName, mLastName, mUsername, mMobile, mPassword; ImageView img_back; Button btnRegister, mbtnSignIn; TextView registerErrorMsg; String jsonresponce=null; String enteredUsername,enteredPassword,enteredfname,enteredlname,enteredmobile; String REGISTER_URL; ProgressDialog pd; private SharedPreferences sharedpreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); mFirstName = (EditText) findViewById(R.id.fname); mLastName = (EditText) findViewById(R.id.lname); mUsername = (EditText) findViewById(R.id.username); mMobile = (EditText) findViewById(R.id.mobie); mPassword = (EditText) findViewById(R.id.pword); btnRegister = (Button) findViewById(R.id.register); mbtnSignIn = (Button) findViewById(R.id.signin); registerErrorMsg = (TextView) findViewById(R.id.tv); sharedpreferences = getSharedPreferences("a2a", Context.MODE_PRIVATE); img_back = (ImageView) findViewById(R.id.imageback); img_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i_backtohome = new Intent(Register.this, HomeActivity.class); startActivity(i_backtohome); } }); mbtnSignIn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i_backtosignin = new Intent(Register.this, Signin.class); startActivity(i_backtosignin); } }); btnRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { enteredUsername = mUsername.getText().toString(); Log.e("username",enteredUsername); enteredPassword = mPassword.getText().toString(); Log.e("username",enteredPassword); enteredfname = mFirstName.getText().toString(); Log.e("username",enteredfname); enteredlname = mLastName.getText().toString(); Log.e("username",enteredlname); enteredmobile = mMobile.getText().toString(); Log.e("username",enteredmobile); REGISTER_URL = "http://ffhhhjkhjgh/register.php?UserName="+enteredUsername+"&FirstName="+enteredfname+"&LastName="+enteredlname+"&Mobile="+enteredmobile+"&Pass="+enteredPassword; // REGISTER_URL = REGISTER_URL + enteredUsername + enteredPassword + enteredfname + enteredlname + enteredmobile; Log.e("finalurl",REGISTER_URL); if (enteredUsername.equals("") || enteredfname.equals("") || enteredlname.equals("") || enteredmobile.equals("") || enteredPassword.equals("")) { Toast.makeText(Register.this, "All Fields are Mandatory", Toast.LENGTH_LONG).show(); return; } if (mUsername.length() <= 1 || mPassword.length() <= 1) { Toast.makeText(Register.this, "Username or password length must be greater than one", Toast.LENGTH_LONG).show(); return; } new AsyncDataClass().execute(); } }); } class AsyncDataClass extends AsyncTask<String, String, String> { /* String fName; String lName; public AsyncDataClass(){ this.fName = enteredfname; this.lName = enteredlname; }*/ @Override protected void onPreExecute() { super.onPreExecute(); pd = new ProgressDialog(Register.this); pd.setMessage("Loading..."); pd.setCanceledOnTouchOutside(false); pd.show(); } @Override protected String doInBackground(String... params) { try{ URL url = new URL(REGISTER_URL); String res; HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setDoInput(true); conn.connect(); res = conn.getResponseMessage(); Log.e("res", res); InputStream in = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); StringBuilder sb = new StringBuilder(); String line = null; try{ while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } in.close(); reader.close(); jsonresponce = sb.toString(); Log.e("jsondata", jsonresponce); }catch (Exception e) { e.printStackTrace(); }finally { try { conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }catch (Exception e){ e.printStackTrace(); } return jsonresponce; } @Override protected void onPostExecute(String s) { pd.dismiss(); if("SUCCESS".equals(jsonresponce)){ Toast.makeText(getApplicationContext(),jsonresponce,Toast.LENGTH_SHORT).show(); SharedPreferences sharedpreferences = getApplicationContext().getSharedPreferences("a2a", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString("enteredfname", enteredfname); editor.putString("enteredlname", enteredlname); editor.commit(); }else{ Toast.makeText(getApplicationContext(),jsonresponce,Toast.LENGTH_SHORT).show(); } super.onPostExecute(s); } } } 

    4 Solutions collect form web for “Preferenze condivise in android che mostrano il valore predefinito non trovato”

    Hai utilizzato SharedPreferences.Editor per memorizzare il valore e poi all'interno di un'altra attività che utilizza PreferenceManager per recuperare il valore. Ecco perché stai sempre get il valore predefinito.

    PreferenceManager viene utilizzato per memorizzare Preferenze per un'applicazione particolare. Sono utilizzati per memorizzare le impostazioni delle app quando vengono utilizzate come SharedPreferences per il salvataggio di dati o valori per il funzionamento all'interno dell'applicazione. Non possono essere utilizzati per le impostazioni di app. Questi sono due file distinti, anche se entrambi utilizzano la class Preferenze.

    È necessario utilizzare l'object SharedPreferences il recupero del valore in sostituzione di PreferenceManager. hai già creato un object SharedPreferences denominato "preferenze" all'interno di AnotherActivity . Utilizza questo object SharedPreferences per recuperare i dati desiderati come mostrato di seguito:

     String value = preferences.getString("key", def_value); 

    Per salvare il valore:

      @Override protected void onPostExecute(String s) { pd.dismiss(); if("SUCCESS".equals(jsonresponce)){ Toast.makeText(getApplicationContext(),jsonresponce,Toast.LENGTH_SHORT).show(); SharedPreferences sharedpreferences = getSharedPreferences("a2a", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString("enteredfname", enteredfname); editor.putString("enteredlname", enteredlname); editor.commit(); }else{ Toast.makeText(getApplicationContext(),jsonresponce,Toast.LENGTH_SHORT).show(); } super.onPostExecute(s); } } 

    Per ripristinare il valore:

      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_myprofile, container, false); mfname = (EditText)rootView.findViewById(R.id.fname); mlname = (EditText)rootView.findViewById(R.id.lname); mcontact = (EditText)rootView.findViewById(R.id.contact); mpassword = (EditText)rootView.findViewById(R.id.editpass); SharedPreferences sharedpreferences = getSharedPreferences("a2a", Context.MODE_PRIVATE) value = sharedpreferences.getString("enteredfname", "enteredfname") mfname.setText(value); return rootView; } 

    Stai utilizzando getSharedPreferences e getDefaultSharedPreferences insieme.

    Fai come questo –

     SharedPreferences sharedpreferences = getApplicationContext().getSharedPreferences("a2a", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString("enteredfname", enteredfname); editor.putString("enteredlname", enteredlname); editor.commit(); 

    E più tardi –

     SharedPreferences preferences = getApplicationContext().getSharedPreferences("a2a", Context.MODE_PRIVATE); String value = preferences.getString("enteredfname", "enteredfname"); 

    provare qualcosa di simile. Crea una class

     public class SharedPreferenceCustom { private Context mContext; private String defValue = ""; public SharedPreferenceCustom(Context context) { this.mContext = context; } public void setSharedPref(String inputKey, Object inputValue) { final SharedPreferences sharedPreferences = mContext.getSharedPreferences("a2a", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(inputKey, String.valueOf(inputValue)); editor.apply(); } public String getSharedPref(String inputKey) { SharedPreferences sharedPreferences = mContext.getSharedPreferences("a2a", Context.MODE_PRIVATE); return sharedPreferences.getString(inputKey, defValue); } } 

    e call quando necessario

    Chiamata da

      SharedPreferenceCustom sp = new SharedPreferenceCustom(mContext); sp.setSharedPref("KEY", "VALUE"); // or sp.getSharedPref("KEY"); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.