Сохранение значения переменной String

131
16 февраля 2018, 18:30

В моём приложении на андроид есть две активити,в первой я использую radiogroup,при выборе radiobutton она передаёт свой id в виде переменной string на вторую активити и сохраняет положение isChecked,это работает хорошо,но на второй активити я пытаюсь сохранить переданную с первой активити имя кнопки,н о при закрытии и открытии приложения переменная String не сохраняется(открывается приложение с Activity 2,но там где должно отображатся сохранённое имя string просто пусто(для отслеживания я поставил на кнопку отображение имени String,при выборе различных radiobutton она отображает правильные имена,но при запуске оно всегда arb,как будто оно не сохраняет последнее значение) Activity 1:

public void onCreate(Bundle savedInstanceState) 
{super.onCreate(savedInstanceState);
 setContentView(R.layout.menu); 
 intent = new Intent(Menu.this, MainActivity.class);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
LoadCheckPreferences();
radioGroup.setOnCheckedChangeListener(rad);
}
OnCheckedChangeListener rad = new OnCheckedChangeListener() {
            @Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
but = (RadioButton) radioGroup.findViewById(checkedId);
int checkedIndex = radioGroup.indexOfChild(but);
SaveCheckPreferences("save_key", checkedIndex);
name =getResources().getResourceEntryName(checkedId);
intent.putExtra("sample_pack",name);
startActivity(intent);
finish();
            }
        };
    private void SaveCheckPreferences(String key, int value) {
pref = getSharedPreferences("save_check", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putInt(key, value);
editor.apply();
    }
    private void LoadCheckPreferences() {
pref = getSharedPreferences("save_check", MODE_PRIVATE);
int savedRadioIndex = pref.getInt("save_key", 0);
but = (RadioButton) radioGroup.getChildAt(savedRadioIndex);
but.setChecked(true);}
}

Activity 2:

public void onCreate(Bundle savedInstanceState) 
{super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
button();
packName = getIntent().getStringExtra("sample_pack");
SavePackPreferences("save_pack",packName);
if(packName==null){
LoadPackPreferences();}
if(packName!=null){
for (int s1=0;s1<12;s1++){
samp[s1]=getResources().getIdentifier(packName+s1, "raw", getPackageName());
soundId[s1]=mSound.load(MainActivity.this,samp[s1],0);}}}
public void SavePackPreferences(String key, String value){
        prefs = getSharedPreferences("save", MODE_PRIVATE);
        SharedPreferences.Editor e= prefs.edit();
        e.putString(key,value);
        e.apply();
    }
    public void LoadPackPreferences(){
        prefs = getSharedPreferences("save", MODE_PRIVATE);
        packName=prefs.getString("save_pack", "arb"));
    }
Answer 1

Правильно, при новом открытии приложения у вас в Activity 2 снова вызывается метод onCreate и в нём вы стираете записанное ранее значение для ключа "sample_pack" значением null. И тогда в LoadPackPreferences() в переменную packName записывается значение по умолчанию - "arb". Попробуйте так:

packName = getIntent().getStringExtra("sample_pack");  
if (!TextUtils.isEmpty(packName) {
   SavePackPreferences("save_pack",packName);
} 
LoadPackPreferences();
READ ALSO
jQuery обработчик нажатия checkbox, которого еще нет

jQuery обработчик нажатия checkbox, которого еще нет

Есть обработчки нажатия на input checkbox

209
Помощь с калькулятором jquery

Помощь с калькулятором jquery

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

264
jquery clone() дублирует клонированные обьекты

jquery clone() дублирует клонированные обьекты

начну сначала, потому что не уверен где проблема скрываетсяесть проект где страницы загружаются путем ajax в том числе и javascript'ы путем

239
Выбирать input в уровнях таблицы

Выбирать input в уровнях таблицы

Добрый день! Использую плагин для создания многоуровневой таблицы https://wwwjqueryscript

411