0

I want to store shared preference again when user change display name in profile

now, data in database has change but i don't know to change shared preference


help me please.

code:

    private static final String PREFERENCE_KEY = "pref_user";
    private static final String DISPLAY_KEY = "user_display_name";
    SharedPreferences sh_pref;
    SharedPreferences.Editor sh_edit;

    UserPreference setting;
    private int user_id;
    private String getuser_id;
    private String user_display_name;

    EditText EDTEditdisplay;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_change_displayname);



        // custom my action bar
        ActionBar actionbar = getActionBar();
        actionbar .setTitle("CHANGE DISPLAY NAME");
        // back navigation
        actionbar.setDisplayHomeAsUpEnabled(true);
        // hide icon app
        getActionBar().setDisplayShowHomeEnabled(false);

        setting = new UserPreference(ChangeDisplayNameActivity.this);       
        user_id = setting.getUserID();  
        getuser_id = String.valueOf(user_id);

        Button BTNsaveDisplayname = (Button) findViewById(R.id.BTNsaveDisplayname);
        BTNsaveDisplayname.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                UpdateDisplayName();
            }
        });


    }//end onCreate


    public boolean UpdateDisplayName() {

        EDTEditdisplay = (EditText) findViewById(R.id.EDTEditdisplay);

        // Dialog alert
        AlertDialog.Builder alert = new AlertDialog.Builder(this);

        // Check Displayname
        if(EDTEditdisplay.getText().length() == 0)
        {
            alert.setMessage("Please input new display name");
            alert.show();
            EDTEditdisplay.requestFocus();
            return false;
        }

        // gettext from edittext
        user_display_name = EDTEditdisplay.getText().toString();

        List<NameValuePair> update_display = new ArrayList<NameValuePair>();
        update_display.add(new BasicNameValuePair("user_id", getuser_id));
        update_display.add(new BasicNameValuePair("user_display_name", user_display_name));

        JSONParser jspaser = new JSONParser();
        String url = "http://su13540254.2th.asia/Hello_Oppa/update_displayname.php";
        String dataJSON = jspaser.makeHttpRequest(url,JSONParser.methodPost, update_display);


        Toast.makeText(getApplicationContext(),
                 "Change display name, Complete", Toast.LENGTH_SHORT).show();

        Intent intent = new Intent(ChangeDisplayNameActivity.this, MainActivity.class);
        startActivity(intent);

        return true;

    }//end UpdateDisplayName
Wolfgang Fahl
  • 15,016
  • 11
  • 93
  • 186
Jaekohz Park
  • 55
  • 2
  • 5

1 Answers1

1

After save display name in database, again put that code where you saving shared preferences with same key, it will replace your display name in shared preference. eg. To Save:

SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
mPreferences.edit().putString("DISPLAY_NAME",user_display_name).commit();

To Retrieve:

SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String display_name = mPreferences.getString("DISPLAY_NAME","Default Name");
Rahul Sharma
  • 5,949
  • 5
  • 36
  • 46
  • please fix your code. `getStringExtra()` is not in SharedPrefs, it's just `getString()`. http://developer.android.com/reference/android/content/SharedPreferences.html – Daniel Nugent Mar 14 '15 at 06:44
  • Also, mPreferences.edit.putString won't work. should be `edit()`. http://stackoverflow.com/questions/3624280/how-to-use-sharedpreferences-in-android-to-store-fetch-and-edit-values/11027631#11027631 – Daniel Nugent Mar 14 '15 at 06:56
  • yes it should mPreferences.edit().putString(), spelling mistake – Rahul Sharma Mar 14 '15 at 06:57