0

Я хочу сохранить данные пользователя для входа в систему, когда они впервые войдут в мобильное приложение в мою таблицу устройств, и каждый раз при открытии приложения они обходят экран входа в систему.Android Studio SharedPreference Сохранение входа в базу данных

Я думаю, что у меня есть эта часть, это просто сохранение переменных, которые я не понимаю. Мой вопрос в том, как и где я должен начать сохранять детали пользователя?

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

     // declaring variebles 
     etUsername = (EditText)findViewById(R.id.etUsername); 
     etPassword= (EditText)findViewById(R.id.etPassword); 
     btnLogin = (Button)findViewById(R.id.btnLogin); 
     etIpAddress = (EditText) findViewById(R.id.etIpAddress); 
     final String username = etUsername.getText().toString(); 
     final String password = etPassword.getText().toString(); 
     String ipAddress = etIpAddress.getText().toString(); 

     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); 
     if (sharedPreferences.contains("ip")) { 
      performLogin(username, password, sharedPreferences.getString("ip", ipAddress)); 
     } 

     // setting up things for login button 
     btnLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
    public void onClick(View v) { 

     String ipAddress = etIpAddress.getText().toString(); 

     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); 

     String username = etUsername.getText().toString().trim(); 
     String password = etPassword.getText().toString().trim(); 

     SharedPreferences.Editor editor = sharedPreferences.edit(); 

     editor.putString("ip", ipAddress); 
     editor.putString("username", username); 
     editor.putString("password", password); 
     editor.commit(); 

     performLogin(username, password, ipAddress); 
    } 
}); 
     } 
+0

Вы уже делаете то же самое. проблема с текущим кодом? –

+0

Говорят, что причиной неправильных учетных данных не являются переменные, в настоящее время сохраняющие нули? Кроме этого, мы по-прежнему проверяем, находятся ли данные пользователя в базе данных до входа в систему, а не регистрируются первые пользователи и сохраняют их данные в базе данных. – Lotse

+0

Вы должны проверить значение в общих настройках перед setContentView(), и если оно там, тогда начните свою деятельность –

ответ

1

Здесь:

performLogin(username, password, sharedPreferences.getString("ip", ipAddress)); 

пользователь получает Войти терпят неудачу, потому как username и password проходит пустое значение performLogin каждый времени при запуске активность.

В точно так же, как получение ip также получить username и password из SharedPreferences как:

if (sharedPreferences.contains("ip")) { 
     String strUsername=sharedPreferences.getString("username", ""); 
     String strPassword=sharedPreferences.getString("password", ""); 
     String strIpAddress=sharedPreferences.getString("ip", ipAddress); 
     performLogin(strUsername, strPassword,strIpAddress); 
    } 
+0

Да, это сработало спасибо! Тем не менее, у меня по-прежнему проблема сбережения пользователей в первый раз. – Lotse

+0

@ Lotse: пожалуйста, объясните, не получите свою точку –

+0

Итак, что происходит сейчас, это приложение позволяет зарегистрированным пользователям получать доступ, то есть имя пользователя и пароль пользователя уже находятся в базе данных. Я хочу, чтобы первые пользователи, которые обратились к приложению, сохранили свои данные в мобильном приложении, то есть зарегистрировали пользователей на экране входа в систему. – Lotse

1

Вы хотите, чтобы получить имя пользователя и пароль от общих предпочтений, как, как Ipaddress, а затем вызвать метод perfomLogin.

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); if (sharedPreferences.contains("ip")) { performLogin(sharedPreferences.getString("username", ""), sharedPreferences.getString("password", ""), sharedPreferences.getString("ip", "")); }

+0

Да, это сработало спасибо! Тем не менее, у меня по-прежнему проблема сбережения пользователей в первый раз. – Lotse

+0

@ Lotse В чем проблема, с которой вы столкнулись? –

+0

Итак, я хочу зарегистрировать пользователей в первый раз, когда приложение проверяет, зарегистрирован ли пользователь в базе данных до входа в систему. Я хочу, чтобы пользователи первого раза могли войти в систему и сохранить их данные в базе данных. – Lotse