JonFinlay
JonFinlay

Reputation: 15

SharedPreferences Android - Saving and editing one string only using two activities

I have a single string which the user will edit and will be displayed back to him when he uses the app. He can edit the string at any time. I am familiar with SQLite databases, but because for this purpose I am using only one string/one record, I felt SharedPreferences would be better. However, after following two different tutorials, I am unable to get it so save the data. In both cases I have needed to amend the tutorial code because I will be using two activities, one to view the code, the other to edit it. I was unable to find a tutorial for using sharedpreferences for two activities. Below is the code.

Class to view the code:

public class MissionOverviewActivity extends Activity {

TextView textSavedMem1;


       /** Called when the activity is first created. */
       @Override
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.mission_view);

           textSavedMem1 = (TextView)findViewById(R.id.textSavedMem1);


           LoadPreferences();

           textSavedMem1.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    finish();
                    return;
                }});


       };



       private void LoadPreferences(){
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        String strSavedMem1 = sharedPreferences.getString("MEM1", "");

        textSavedMem1.setText(strSavedMem1);

       }


      } 

Class to edit the code and return to the view page

public class MissionDetailActivity extends Activity {

EditText editText1;
Button buttonSaveMem1;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.mission_edit);

       editText1 = (EditText)findViewById(R.id.editText1);
       buttonSaveMem1 = (Button)findViewById(R.id.buttonSaveMem1);


       buttonSaveMem1.setOnClickListener(buttonSaveMem1OnClickListener);


   }

   Button.OnClickListener buttonSaveMem1OnClickListener
    = new Button.OnClickListener(){

  @Override
  public void onClick(View arg0) {
   // TODO Auto-generated method stub
   SavePreferences("MEM1", editText1.getText().toString());
   viewStatement();
  }

   };





   private void SavePreferences(String key, String value){
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
   }

   protected void viewStatement() {
        Intent i = new Intent(this, MissionOverviewActivity.class);
        startActivity(i);
      }

}

If any body could answer this question, or point me in the direction of a sharedpreferences tutorial that uses two classes (for edit and displaying), It would be greatly appreciated!

Thanks

Upvotes: 1

Views: 820

Answers (1)

Blackbelt
Blackbelt

Reputation: 157447

getPreferences(int) is private for Activity, you want to share the same SharedPreference between activities you should use this way:

SharedPreferences prefs = this.getSharedPreferences(
      "yourfilename", Context.MODE_PRIVATE);

and use the same method when you want to reload it. here the doc for getPrerences(int)

Upvotes: 1

Related Questions