2016-04-03 39 views
1

So habe ich eine Aktivität mit ein paar Tasten jeweils mit einem TextView unten, wenn ich auf die Schaltfläche ein Dialog Fragment mit einem EditText und einem "Fertig" -Button erscheint, schreibe ich etwas in der EditText, klicken Sie auf "Done" und Ti ändert den Text unter der Schaltfläche, die ich geklickt habe, das funktioniert gut. Was ich brauche, ist den vorherigen Text durch den neuen Text in den gemeinsamen Voreinstellungen zu ersetzen, die ich bereits habe.Android: Zugriff auf SharedPreferences innerhalb eines DialogFragments

Mein SharedPreferences: SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);

den Dialog öffnen und die ID des Textview vorbei:

fm = getFragmentManager(); 
myFragment = new Fragment_Subject_Edit(); 

     FirstButton.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      Bundle data = new Bundle(); 
      data.putInt("ID", FirstText.getId()); 
      myFragment.setArguments(data); 

      myFragment.show(fm, "ClassEditor"); 
      return false; 
     } 
    }); 

Recieve ID im Dialog Fragment:

if (getArguments() != null) { 

     Bundle data = getArguments(); 
     int id = data.getInt("ID"); 

     mTextView = (TextView) getActivity().findViewById(id); 

    } 

den neuen Text an die unten Textview Hinzufügen der Knopf:

DoneButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String newText = mEditText.getText().toString(); 
      mTextView.setText(newText); 
      getDialog().dismiss(); 

     } 
    }); 

hier die Frage ist wirklich nur, wie die Gemeinsame Einstellungen zu aktualisieren

Antwort

1

Sie einfach Editor verwenden Ihre neue Daten über SharedPreferences

Also in diesem Fall der Code wie folgt

DoneButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     String newText = mEditText.getText().toString(); 
     mTextView.setText(newText); 
     SharedPreferences.Editor e = getActivity().getPreferences(Context.MODE_PRIVATE).edit(); 
     editor .putString ("key","your_value"); 
     editor .commit(); 
     getDialog().dismiss(); 

    } 
}); 
wird zu sparen
+0

Okay, das funktioniert, also muss ich jetzt eine Bedingung für jeden Schlüsselwert erstellen oder gibt es eine einfachere Möglichkeit zu überprüfen, welche Schaltfläche angeklickt wurde, und den entsprechenden Schlüssel auszuwählen? –

+0

Sie können 'onClickListener' in Ihr Fragment 'implementieren' und können Ihre Bedingungen in' switch/case' Blöcken überprüfen. –

+0

Okay, das funktioniert, danke! –

Verwandte Themen