2015-12-16 2 views
0

Здесь у меня есть блок кода, который передает информацию от текущей деятельности к другому:Общие предпочтения не работает для хранения/приема данных

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

     prefs = getSharedPreferences("com.amrapps.paneraautomate", MODE_PRIVATE); 

     name = (EditText) findViewById(R.id.name); 
     lastName = (EditText) findViewById(R.id.lastName); 
     password = (EditText) findViewById(R.id.password); 
     final CheckBox passwordReveal = (CheckBox) findViewById 
       (R.id.checkbox); 

     passwordReveal.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked) { 
        password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 
       } else { 
        password.setInputType(129); 
       } 
      } 
     }); 
    } 

    public void continueButton(View v) { 
     String stringName = name.getText().toString(); 
     String stringLastName = lastName.getText().toString(); 
     String stringPassword = password.getText().toString(); 

     SharedPreferences.Editor editor = prefs.edit(); 
     prefs.edit().putString("name", stringName).commit(); 
     prefs.edit().putString("lastName", stringLastName).commit(); 
     prefs.edit().putString("password", stringPassword); 
     editor.commit(); 

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

Я пытаюсь использовать вошли туда данные в моем MainActivity как так:

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

     prefs = getSharedPreferences("com.mycompany.myAppName", MODE_PRIVATE); 

     name = prefs.getString("name", ""); 
     lastName = prefs.getString("lastName", ""); 
     password = prefs.getString("password", ""); 

     // Check for null values and set default if empty 
     if (name == "") { 
      name = "Johnny"; 
     } 

     if (lastName == "") { 
      lastName = "Appleseed"; 
     } 

     if (password == "") { 
      password = "Asdf123"; 
     } 

к сожалению, каждый раз, когда он запускает его всегда задает имя для «Джонни Appleseed», даже если значение не равно нулю!

+5

Первая вещь, которую Вы используете два различных файлы настроек. Следующее - это [вы неправильно сравниваете строки] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – codeMagic

+0

О, боже мой, ты прав! Это очень смущает, потому что мы только что узнали об этой последней главе в моем классе AP Computer Science ...: ( – alex23434

ответ

5

getSharedPreferences("com.amrapps.paneraautomate", MODE_PRIVATE) и getSharedPreferences("com.mycompany.myAppName", MODE_PRIVATE); должны использовать ту же строку в качестве первого параметра

+0

Wow. Я чувствую себя глупо: П. Кроме того, как комментатор выше, я неправильно сопоставлял строки. – alex23434

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