Передача нескольких строк в SharedPreferences - PullRequest
2 голосов
/ 21 февраля 2012

Я хочу сохранить три строки в качестве пользовательских настроек для моего приложения.У меня уже есть хороший макет, просто нужно сохранить строки в SharedPreferences.Я также хотел бы знать, как я могу получить эти строки в следующем упражнении.Ниже мой текущий код, я был бы очень признателен, если бы кто-то мог показать мне, как я могу добавить эту функциональность в код.Это контрольно-пропускной пункт в моем приложении, которое я пытаюсь преодолеть уже несколько дней.

Код для основной деятельности:

package com.amritayalur.mypowerschool;



import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;



public class MyPowerSchoolActivity extends Activity {
Button buttonSubmit;
TextView textViewTitle;
TextView textViewDesc;
EditText editTextURL, editTextUser, editTextPass;


 String str;
 String username;
 String password;
 String url;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    buttonSubmit = (Button) findViewById(R.id.buttonSubmit);
    textViewTitle = (TextView) findViewById(R.id.textViewTitle);
    textViewDesc = (TextView) findViewById(R.id.textViewDesc);

    editTextURL = (EditText) findViewById(R.id.editTextURL);
    editTextUser = (EditText) findViewById(R.id.editTextUser);
    editTextPass = (EditText) findViewById(R.id.editTextPass);
    //Start TextView
    textViewTitle.setText("MyPowerSchool");


    //button listener
    buttonSubmit.setOnClickListener(new View.OnClickListener() {

         @Override
            public void onClick(View v) 
            {
                if (  ( !editTextURL.getText().toString().equals("")) && (
!editTextUser.getText().toString().equals("")) && (
!editTextPass.getText().toString().equals("") ) ) 
                {

                    url = editTextURL.getText().toString();
                    username = editTextUser.getText().toString();
                    password = editTextPass.getText().toString();


                    // TODO Auto-generated method stub
                    //Intent i = new Intent( MyPowerSchoolActivity.this,
creds.class);    


                   //startActivity(i);



                }
            };




});}}

Ответы [ 4 ]

5 голосов
/ 21 февраля 2012

Просто установите эти переменные класса в Activity, которые вы хотите использовать SharedPreferences:

public static String MY_PREFS = "MY_PREFS";
private SharedPreferences mySharedPreferences;
int prefMode = Activity.MODE_PRIVATE;

А затем сохранить строковые значения:

SharedPreferences.Editor editor = mySharedPreferences.edit();
editor.putString("key1", "value1");
editor.putString("key2", "value2");
editor.putString("key3", "value3");

editor.commit(); // persist the values

Чтобы прочитать их в другом упражнении / классе:

mySharedPreferences = getSharedPreferences(MY_PREFS, prefMode);
String string1 = mySharedPreferences.getString("key1", null);
String string2 = mySharedPreferences.getString("key2", null);

Это не сложно найти и найти примеры. Перейдя к документации в Android Developers , вы найдете ссылку на этот полезный сайт о том, как использовать хранилище данных на телефонах Android.

2 голосов
/ 21 февраля 2012

Как-то определите ваши предпочтительные имена полей. Обычно это делается через финальное статическое поле. Это может быть сделано в вашем классе деятельности в каком-то отдельном классе. Дайте им несколько уникальных имен.

public static final String MY_PARAM_1 = "com.amritayalur.mypowerschool.PARAM_1";
public static final String MY_PARAM_2 = "com.amritayalur.mypowerschool.PARAM_2";

Получить экземпляр общих настроек

// "this" is your activity or context
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 

Чтобы поместить ваши строки в преференции, вам нужно создать редактор

SharedPreferences.Editor editor = prefs.edit();

Тогда поставь свои значения

editor.putString(MY_PARAM_1, "First string");
editor.putString(MY_PARAM_2, "Second string");

Тогда все готово, внесите свои изменения

editor.commit();

Чтобы вернуть ваши значения, используйте метод getString

// specify default value in case if preferences are empty or current key is not set
prefs.getString(MY_PARAM_1, "default value");
0 голосов
/ 07 октября 2017

Первая настройка общих настроек.Для этого установите эту строку перед созданием:

  private Context mContext; 

, затем поместите это в значение:

                    mContext = this;   

Затем сохраните свое значение в SharedPreferece:

 SharedPreferences settings = 
PreferenceManager.getDefaultSharedPreferences(mcontext); 
SharedPreferences.Editor editor = settings.edit();

url = editTextURL.getText().toString();
username = editTextUser.getText().toString();
password = editTextPass.getText().toString();

editor.putString("kye1", url);
editor.putString("kye2", username);
editor.putString("kye3", password);

Затем получите ваше значение из другого класса (или из любого другого места):

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(mcontext); 
 String value1=settings.getString("key1",""); // for url
 String value2=settings.getString("key2",""); // for name
 String value3=settings.getString("key3",""); // for password

Затем установите это значение «value1 / 2/3» в любом месте.

0 голосов
/ 19 августа 2016

Вы можете добавить несколько значений, например:

preferences.edit()
      .putLong(DAYS_LEFT, premiumStatus.getDaysLeft())
      .putString(KEY, premiumStatus.getKey())
      .putString(ID, premiumStatus.getId())
      .apply();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...