-3

Kein Wert von . Sharedpreference to textview. Schauen Sie in Code. Gibt es einen Fehler? Und was ist der Unterschied zwischen den beiden folgenden Codezeilen ...Das Anzeigen von Werten, die in "sharedpreferences" eingegeben werden, wird in textView nicht angezeigt.

sharedPreferences = getSharedPreferences("Mypreferences",Context.MODE_PRIVATE); 

und

sharedPreferences=PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 

Hier finden Sie meine Zeilen Code ..

public class MainActivity extends AppCompatActivity { 
    EditText et_name, et_phon, et_email, et_city; 
    Button button_submit, button_show; 
    SharedPreferences sharedPreferences; 
    SharedPreferences.Editor editor; 
    TextView tv_name,tv_phone,tv_email,tv_city; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    initComponents(); 
    sharedPreferences = getSharedPreferences("Mypreferences", Context.MODE_PRIVATE); 

    button_submit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String name, phon, email, city; 
      name = et_name.getText().toString().trim(); 
      phon = et_phon.getText().toString().trim(); 
      email = et_email.getText().toString().trim(); 
      city = et_city.getText().toString().trim(); 

      editor = sharedPreferences.edit(); 
      editor.putString("NameKey", name); 
      editor.putString("phoneKey", phon); 
      editor.putString("emailKey", email); 
      editor.putString("cityKey", city); 
      editor.apply(); 
      Toast.makeText(MainActivity.this, "Submitted", Toast.LENGTH_SHORT).show(); 


     } 
    }); 
    button_show.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 
      String n = sharedPreferences.getString("NameKey", null); 
      String p = sharedPreferences.getString("phoneKey", null); 
      String e = sharedPreferences.getString("emailKey", null); 
      String c = sharedPreferences.getString("cityKey", null); 

      tv_name.setText(n); 
      tv_phone.setText(p); 
      tv_email.setText(e); 
      tv_city.setText(c); 

      Toast.makeText(MainActivity.this, "Show button clicked", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

private void initComponents() { 

    et_name = (EditText) findViewById(R.id.et_name_main); 
    et_phon = (EditText) findViewById(R.id.et_phone_main); 
    et_email = (EditText) findViewById(R.id.et_email_main); 
    et_city = (EditText) findViewById(R.id.et_city_main); 
    tv_name = (TextView) findViewById(R.id.tv_name_main); 
    tv_phone = (TextView) findViewById(R.id.tv_phone_main); 
    tv_email = (TextView) findViewById(R.id.tv_email_main); 
    tv_city = (TextView) findViewById(R.id.tv_city_main); 
    button_submit = (Button) findViewById(R.id.btn_submit_main); 
    button_show = (Button) findViewById(R.id.btn_view_main); 

} 
} 

Jede Art Hilfe wird geschätzt.

+0

Dies erstellt einfach zwei verschiedene sharedPreferences.xml. Der Standard heißt shared_preferences in Ihrer App directoy, der andere ist in Ihrem Fall mit "mypreferences" benannt. MODE_PRIVATE bedeutet, dass keine andere App es eingeben kann. – Opiatefuchs

+2

Sie speichern in verschiedenen Instanzen von SharedPreferences und in Standard-Abfragen. Verwenden Sie 'getSharedPreferences (" Mypreferences ", Context.MODE_PRIVATE)' oder verwenden Sie beides beim Ablegen und Abrufen. – VenomVendor

+0

Thanxx. U Jungs haben meinen Punkt klar gemacht, ich möchte über MODI in diesem Argument wissen. –

Antwort

0

Sie erstellen zwei sharedPreferences xml files in Ihrer App-Verzeichnis. Die Standardeinstellung ist der Standard-preferences xml, die andere, die Sie mit

erstellt haben
sharedPreferences = getSharedPreferences("Mypreferences", Context.MODE_PRIVATE); 

Ihre Prefs in einem Mypreferences.xml speichern. MODE_PRIVATE bedeutet, dass diese preferences nur für Ihre App verfügbar sind (aber auf einem gerooteten Gerät, auf das jeder zugreifen kann).

Wenn Sie auf Ihre gespeicherten sharedPreferences zugreifen möchten, müssen Sie dieselben Einstellungen verwenden, mit denen Sie sie gespeichert haben. Das bedeutet, dass entweder Sie haben überall verwenden Sie die gleichen Schlüssel zugreifen:

sharedPreferences = getSharedPreferences("Mypreferences", Context.MODE_PRIVATE); 

oder

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 

nicht beide. In Your button_show click method, eröffnen Sie bitte ein neues sharedPreferences object anlegen, löschen Sie einfach die folgende Zeile:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 

weil Sie eine globale sharedPreferences object generiert haben und sie überall in Ihrem class zugreifen können.

+0

** Danke **. –

1

Problem ist, erstellen Sie eine sharedPref„Mypreferences“ genannt Werte zu speichern und zu versuchen, Werte von Standard sharedPreferences abzurufen, die die Werte nicht halten wird Sie gesetzt haben.

Ändern Sie die Zeile

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 

zu

SharedPreferences sharedPreferences = getSharedPreferences("Mypreferences", Context.MODE_PRIVATE); 
+0

Vielen Dank! Silli Prob ... –