2015-06-25 5 views
0
public class LoginActivity extends BaseActivity{ 
    private SharedPreferences pref; 
    private SharedPreferences.Editor editor; 

    private EditText accountEdit; 

    private EditText passwordEdit; 

    private Button login; 
    private CheckBox rememberPass; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login); 
     accountEdit =(EditText)findViewById(R.id.account); 
     passwordEdit = (EditText)findViewById(R.id.password); 
     rememberPass=(CheckBox)findViewById(R.id.remember_pass); 

     login = (Button)findViewById(R.id.login); 
     editor.putBoolean("remember_password",false); 
     boolean isRemember = pref.getBoolean("remember_password",false); 
     if(isRemember){ 
      String account = pref.getString("account", ""); 
      String password =pref.getString("password", ""); 
      accountEdit.setText(account); 
      passwordEdit.setText(password);   
      rememberPass.setChecked(true); 
     } 

     login.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       String account =accountEdit.getText().toString(); 
       String password = passwordEdit.getText().toString(); 

       if (account.equals("admin")&& password.equals("123456")) 
       { editor = pref.edit(); 
        if(rememberPass.isChecked()) 
        { 
         editor.putBoolean("remember_password",true); 
         editor.putString("account",account); 
         editor.putString("password",password); 
        } 
        else 
        { 
         editor.clear(); 
        } 
        editor.commit(); 

        Intent intent = new Intent(LoginActivity.this,MainActivity.class); 
        startActivity(intent); 
        finish(); 
       } 
       else 
       { 
        Toast.makeText(LoginActivity.this,"account for password is invalid", 
          Toast.LENGTH_LONG).show(); 
       }    
      } 
     }); 

    } 
} 

Я использую Eclipse, чтобы закодировать android.I получил ошибку в LogCat, которая NullPointerException причина по «булевой isRemember = pref.getBoolean (» remember_password «ложь);» Я не знаю почему. Как правильно использовать getBoolean? Спасибо заранее.Используйте sharedPreference, чтобы сохранить запись и пароль

ответ

2

Поскольку pref=null в

boolean isRemember = pref.getBoolean("remember_password",false); 

initialized его перед использованием

SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); 
1

Вы должны создать объект общего предпочтения, чем вы можете использовать его в вашем коде

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 

чем использование

boolean isRemember = pref.getBoolean("remember_password",false); 
1

Используйте этот простой способ использовать prefrences

 private SharedPreferences getPrefs; 

    //in OnCreate 
    getPrefs = PreferenceManager.getDefaultSharedPreferences(Activity_Name.this); 

    //At insertion value 
    getPrefs.edit().putBoolean("Key_Name", false).commit(); 

    //At fetching Values 
    boolean a = getPrefs.getBoolean("Key_Name", false); 
Смежные вопросы