Я не могу создать файл общих предпочтений

-4

Я не могу создать файл Shared Preference, с которым я боролся в течение 2 дней, пожалуйста, помогите, я новичок. В моем приложении у меня есть 15 вопросов каждый на разных экранах, и я хочу сохранить текст выбранной опции так, чтобы Я могу использовать его в будущем. Мой код

public class QuestionPagerFragment extends Fragment {

protected View mView;

String pageData[]; //Stores the text to swipe.
String optionData[];//Stores the option data.

static int rid;
RadioGroup group;
static ArrayList<Integer> list = new ArrayList();

SharedPreferences prefs;
public static final String MyPREFERENCES = "MyPrefs" ;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.page, container, false);
return mView;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
prefs = getActivity().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
pageData=getResources().getStringArray(R.array.desserts);

optionData=getResources().getStringArray(R.array.options);

group = (RadioGroup)mView.findViewById(R.id.group);

group.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
int radioButtonID = group.getCheckedRadioButtonId();
View radioButton = group.findViewById(radioButtonID);
rid = group.indexOfChild(radioButton);
list.add(getArguments().getInt("pos"), rid);
click();

}
});
((TextView)mView.findViewById(R.id.textMessage)).setText(pageData[getArguments().getInt("pos")]);
if(getArguments().getInt("pos") == 14) {
((Button)mView.findViewById(R.id.submitbtn)).setVisibility(View.VISIBLE);
((Button)mView.findViewById(R.id.submitbtn)).setOnClickListener(new View.OnClickListener() {
public void onClick(View v){

}
});
}

for(int i = 0; i < group.getChildCount(); i++){
((RadioButton) group.getChildAt(i)).setText(optionData[(getArguments().getInt("pos")*4)+i]);
}
}

public static void save() {
if(rid==0){
MainActivity.FLAG_A++;
}
else if(rid==1){
MainActivity.FLAG_B++;
}
else if(rid==2){
MainActivity.FLAG_C++;
}
else if(rid==3){
MainActivity.FLAG_D++;
}
}
public void click(){

SharedPreferences prefs = getActivity().getSharedPreferences( "idValue", 0 );
SharedPreferences.Editor editor = prefs.edit();
editor.putString( "idValue", list.get(getArguments().getInt("pos")).toString());
editor.commit();
}

}

спросил(а) 2021-01-19T19:49:48+03:00 2 месяца, 3 недели назад
1
Решение
62

Этот код поможет вам сохранить значения

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
Editor editor = pref.edit();

//Сохранение данных в виде пары KEY/VALUE

editor.putBoolean("key_name1", true);           // Saving boolean - true/false
editor.putInt("key_name2", "int value"); // Saving integer
editor.putFloat("key_name3", "float value"); // Saving float
editor.putLong("key_name4", "long value"); // Saving long
editor.putString("key_name5", "string value"); // Saving string

// Save the changes in SharedPreferences
editor.commit(); // commit changes

//Получить данные SharedPreferences

//Если значение для ключа не существует, тогда возвращаем второе значение параметра - в этом случае значение null

pref.getBoolean("key_name1", null);         // getting boolean
pref.getInt("key_name2", null); // getting Integer
pref.getFloat("key_name3", null); // getting Float
pref.getLong("key_name4", null); // getting Long
pref.getString("key_name5", null); // getting String

//Удаление значения ключа из SharedPreferences

editor.remove("key_name3"); // will delete key key_name3
editor.remove("key_name4"); // will delete key key_name4

// Save the changes in SharedPreferences
editor.commit(); // commit changes

//Очистить все данные из SharedPreferences

 editor.clear();
editor.commit(); // commit changes

ответил(а) 2021-01-19T19:49:48+03:00 2 месяца, 3 недели назад
44

Попробуйте удалить эту строку: SharedPreferences prefs = getActivity(). GetSharedPreferences ("idValue", 0);

ответил(а) 2021-01-19T19:49:48+03:00 2 месяца, 3 недели назад
44

Попробуйте изменить commit() в apply() примерно так:

public void click(){

SharedPreferences prefs = getActivity().getSharedPreferences( "your.project.package.name", 0 ); // don't use short id because sharedPreferences is a global file
SharedPreferences.Editor editor = prefs.edit();
editor.putString( "idValue", list.get(getArguments().getInt("pos")).toString());

editor.apply(); //Here is the change
}

чтобы прочитать ваши префы, попробуйте:

 SharedPreferences prefs = this.getSharedPreferences("your.project.package.name", Context.MODE_PRIVATE);
String idValue= prefs.getString("idValue", null);

ответил(а) 2021-01-19T19:49:48+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема