1

In meiner App lasse ich den Benutzer wählen Sie einen Namen zur Anzeige. Es sollte angezeigt werden als: Hallo usertext!Update Textansicht direkt nach dem Benutzer ändern Einstellungen Wert

Ich kann Einstellungen erfolgreich aktualisieren. Ich habe PreferenceActivity verwendet. Ich kann den Wert auch ändern. Um den Text in der ausgewählten Textansicht zu ändern, muss ich die App neu starten.

Wie kann ich meine Textansicht aktualisieren, nachdem Benutzer den Wert in den Einstellungen aktualisiert haben?

+1

bitte den Code anzeigen, so weit Sie verwenden – BR89

+1

Sie können 'Preference.OnPreferenceChangeListener' –

+0

@ BR89 mein Code sehr ähnlich zu unten LBJ33-Code. – Vishwa

Antwort

1
Preference.OnPreferenceChangeListener changeListener = new Preference.OnPreferenceChangeListener() { 
    public boolean onPreferenceChange(Preference preference, Object newValue) { 
     // Code goes here    
     return true; 
    } 
}; 

EditTextPreference pref = (EditTextPreference)findPreference(getString(R.string.pref1)); 
pref1.setOnPreferenceChangeListener(changeListener); 

EditTextPreference pref2 = (EditTextPreference)findPreference(getString(R.string.pref2)); 
pref2.setOnPreferenceChangeListener(changeListener); 
+0

danke, ich werde dies überprüfen.aber ich denke, das wird den Trick tun – Vishwa

1

Sie können SharedPreferences dafür verwenden, vergessen Sie nicht, .apply nach dem Einstellen der Werte zu verwenden. Hier ist ein Beispiel (Vergessen Sie nicht, die Werte zu ändern, um Ihre editText, Knöpfe, Klassen übereinstimmen, ect):

Aktivität Zwei (wo sie den neuen Wert eingeben und speichern):

public class settings extends MainActivity { 
private Button mButton; 
private EditText mEditText; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.settings); 
    mButton = (Button) findViewById(R.id.submit); 
    mEditText = (EditText) findViewById(R.id.editTxtUsername); 

    mButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); 
      SharedPreferences.Editor editor = pref.edit(); 
      if (mEditText.getText().length() > 0) { 
       editor.putString("username", mEditText.getText().toString()); 
       editor.apply(); 

      } else Toast.makeText(getApplicationContext(), "Please enter a valid username.", Toast.LENGTH_LONG).show(); 
     } 
    }); 
    } 
} 

Activity One (Wo Sie den Benutzernamen anzeigen möchten):

public class MainActivity extends AppCompatActivity { 

private TextView mTxtUsername; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mTxtUsername = (TextView) findViewById(R.id.txtUsername); 
    SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); 
    String username = pref.getString("username", ""); 

    mTxtUsername.setText(username); 
    } 
} 

Dies sollte funktionieren, und wird den Wert für das nächste Mal, wenn sie die App auch öffnen sparen! Lassen Sie mich wissen, wenn Sie irgendwelche Probleme mit dem Code, ich kann es nur schnell aufgepeitscht

+0

thank.exactly das war ich did.aber das Problem, das ich habe, ist Wert in dieser Textansicht wird nicht aktualisiert, bis ich schließe und öffne meine App erneut .Ich muss einen Weg finden, um Textview zu aktualisieren, direkt nachdem ich den Wert in settings.thanks für die Hilfe @ LBJ33 – Vishwa

+0

LBJ33 es funktioniert! danke Obwohl ich fand diese Zeile setzen vor setContentView() Zeile in onCreate() -Methode ist funktioniert auch nur, wenn ich den Standardwert in meiner XML-Voreinstellung angegeben habe. PreferenceManager.setDefaultValues ​​(dies, R.xml.preferences, false); Danke für die answer.it funktioniert wie ich erwartet – Vishwa

Verwandte Themen