Сохранить данные при изменении активности - PullRequest
0 голосов
/ 19 сентября 2018

У меня проблема с сохранением данных при изменении активности.

У меня есть начальный логин с EditText, где люди могут написать параметры для логина.

Прикрепить код XML:

 <EditText
    android:id="@+id/portText"
    android:layout_width="300dp"
    android:layout_height="30dp"
    android:layout_marginRight="16dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="4dp"
    android:background="@drawable/shape"
    android:hint="  Port Tcp"
    android:lineSpacingExtra="8sp"
    android:singleLine="true"
    android:textAlignment="textStart"
    android:textColorLink="@android:color/background_dark"
    android:textSize="10sp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/idText" />

Когда пользователь нажимает логинКнопка изменения активности.Как можно сохранить и показать начальную вставку данных пользователю, когда он возвращается на страницу входа?

Ответы [ 4 ]

0 голосов
/ 19 сентября 2018

Используйте SharedPreferences для вашего варианта использования.Ниже приведен пример кода для реализации того, что вы ищете.

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val sharedPref = this.getSharedPreferences("myPrefs", Context.MODE_PRIVATE)

if (!sharedPref.getString("login", "").isEmpty()) {
    portText.setText(sharedPref.getString("login", ""))
}


loginButton.setOnClickListener {
    val login = portText.text.toString()
    sharedPref.edit().putString("login", login).apply()
    startActivity(Intent(this, SecondActivity::class.java))
}
0 голосов
/ 19 сентября 2018

SharedPreferences - это то, что вы ищете.Это будет выглядеть примерно так.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val pref = this.getSharedPreferences("myPrefs", Context.MODE_PRIVATE)

    if (!pref.getString("login", "").isEmpty()) {
        portText.setText(pref.getString("login", ""))
    }


    loginButton.setOnClickListener {
        val login = portText.text.toString()
        pref.edit().putString("login", login).apply()
        startActivity(Intent(this, SecondActivity::class.java))
    }

}
0 голосов
/ 19 сентября 2018

// Первое действие при нажатии кнопки.

SharedPreferences prefs = getSharedPreferences("MyPref", MODE_PRIVATE);
SharedPreferences.Editor editor = Constant.prefs.edit();
editor.putString("loginvalue", portText.getText.toString());
editor.commit();

// Второе действие

SharedPreferences prefs = getSharedPreferences("MyPref", MODE_PRIVATE);
if(prefs.contains("loginvalue")){youtextview.setText(prefs 
.getString("loginvalue",""));}

Попробуйте, скажите, помогло ли это?

0 голосов
/ 19 сентября 2018

Так же, как сказали @Teptis и @Nero, вы можете использовать общие настройки для сохранения ваших данных во время входа в систему.Данные, сохраненные с использованием общих настроек, доступны даже после полного закрытия приложения.Вот как вы храните данные в общих настройках

     val pref: SharedPreferences = getSharedPreferences("RandomNameForKey",Context.MODE_PRIVATE)
                    val editor: SharedPreferences.Editor = pref.edit()//You need editor for writing something to shared preferences
                    editor.putBoolean("user_logged_In", true)//You can put Boolean ,String ,etc whatever you want (boolean in my case)
                    editor.putString("login_access_token",response.body()?.data?.access_token)//String example
                    editor.commit()//Commit to make changes

После сохранения перейдите к ним следующим образом:

     val pref: SharedPreferences = getSharedPreferences("sameKeyAsAbove", Context.MODE_PRIVATE)//Same Key name used while storing values(Important)
    accessToken = pref.getString("login_access_token", "DEFAULT")//Same key name as above while storing string(Access token is a string variable)

Еще одна вещь, вам не понадобится редактор при доступе к данным из общих настроеквам просто нужно это при хранении данных

просто не связывайтесь с ключами, иначе все пойдет не так

HappyCoding

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...