2015-02-15 2 views
1

Итак, я пытался сохранить небольшие данные, такие как имя пользователя пользователя (помните, что функция), а sharedpreference не сохраняет данные в моем устройстве Android. Интересно, почему, и нет ничего плохого в мой код ...SharedPreference не сохраняет данные на моем устройстве

final Button btnLogin = (Button) findViewById(R.id.btn_Login); 
     btnLogin.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       tvName = (EditText) findViewById(R.id.edit_mName); 

       tvPassword = (EditText) findViewById(R.id.edit_mPassword); 

       try { 
        if (cbRme.isChecked()) { 
         SharedPreferences prefs = getSharedPreferences(
           PREFS_NAME, Context.MODE_PRIVATE); 
         SharedPreferences.Editor editor = prefs.edit(); 
         editor.clear(); 
         editor.putString("keyusername", tvName.getText() 
           .toString()); 
         editor.putString("keypassword", tvPassword 
           .getText().toString()); 
         editor.putBoolean("keycheckbox", true); 
         editor.commit(); 


        } else { 
         SharedPreferences prefs = getSharedPreferences(
           PREFS_NAME, Context.MODE_PRIVATE); 
         SharedPreferences.Editor editor = prefs.edit(); 
         editor.clear(); 
         editor.remove("keyusername"); 
         editor.remove("keypassword"); 
         editor.remove("keycheckbox"); 
         editor.commit(); 
        } 
       } catch (Exception e) { 
        Toast.makeText(getBaseContext(), e.getMessage(), 
          Toast.LENGTH_LONG).show(); 
       } 

    public void onResume() { 

    SharedPreferences prefs = getSharedPreferences("project", 0); 
    username = prefs.getString("keyusername", DEFAULT); 
    password = prefs.getString("keypassword", DEFAULT); 
    checkbox = prefs.getBoolean("keycheckbox", false); 

    if ((username.equals(DEFAULT)) || checkbox == false) { 
     Toast.makeText(getBaseContext(), "No data found", Toast.LENGTH_LONG) 
       .show(); 
    } else { 
     Toast.makeText(getBaseContext(), "Data is found.", 
       Toast.LENGTH_LONG).show(); 

     setUsername(); 
     setCheckedBox(); 
    } 

    super.onResume(); 
} 

private void setUsername() { 
    EditText tvName = (EditText) findViewById(R.id.edit_mName); 
    tvName.setText(username); 
} 

private void setCheckedBox() { 
    cbRme = (CheckBox) findViewById(R.id.cbRememberMe); 
    cbRme.setChecked(checkbox); 
} 

ответ

1

Вы пытаетесь установить данные ниже общей прив:

SharedPreferences prefs = getSharedPreferences(
           PREFS_NAME, Context.MODE_PRIVATE); 

И пытается получить данные из ниже общего прив:

SharedPreferences prefs = getSharedPreferences("project", 0); 

, который, как представляется, 2 разных Shared прив

EDIT:

Общие префиксы не видны на устройстве по соображениям безопасности, но если устройство укоренено, вы можете просмотреть общие файлы pref.

Чтобы отладить и просмотреть общий файл pref, вы можете использовать эмулятор, в котором доступны общие привилегии, и вы можете вытащить и нажать общий файл pref.

+0

отметил, что это была ошибка от меня. даже несмотря на это, я должен получать XML-файл, если данные сохраняются, но не для моего случая. Я не получил никакого .xml-файла. – Rainbow

+0

Вы имеете в виду, что общие файлы pref не созданы? – KOTIOS

+0

yeap, общие файлы pref – Rainbow

Смежные вопросы