ArrayList-ni parametrlardan qanday saqlash mumkin

Men saqlangan yozuvlarimni umumiy baholarimdan olishga harakat qilaman, lekin men buni bilmayman. Har doim hech narsa ko'rsatilmaydi.

LostDialogFragment ichida katalogni saqlab qo'yaman, men disk raskadrovka qilaman va bu har doim ma'lumotni saqlaydi. Men MainGameFragmentdan zikrlarni olaman

 public void saveArray() {
    SharedPreferences prefs = getContext().getSharedPreferences("user_and_score", Context.MODE_PRIVATE);
    SharedPreferences.Editor edit = prefs.edit();
    Set set = new HashSet<>();
    set.addAll(MainGameFragment.LEADERBOARDUSER);
    edit.putStringSet("user_and_score", set);
    edit.apply();
}

Here is reference in MainGameFragment

 public static ArrayList LEADERBOARDUSER = new ArrayList<>();

Va SettingsFragment da saqlangan Arrayni sinab ko'ring

 private ArrayList leaderBoardList = new ArrayList<>();


case LEADER_BOARD:
            recyclerView.setVisibility(View.VISIBLE);
            SharedPreferences prefs = getContext().getSharedPreferences("user_and_score", Context.MODE_PRIVATE);
            SharedPreferences.Editor edit = prefs.edit();
            Set set = new HashSet<>();
            edit.putStringSet("user_and_score", set);
            set.addAll(leaderBoardList);
            edit.apply();
            adapter = new CustomAdapterForSettingsFragment(leaderBoardList);
            recyclerView.setAdapter(adapter);
            break;

Savolim qanday qilib saqlangan qatorni olish kerak?

Yoki saqlamadim. Hozir men diskvalifikatsiya qilaman va hech kim qutqarilmaydi, Shared-da qatorni saqlashga yordam ber

0
qo'shib qo'ydi muallif Prerak Sola, manba

6 javoblar

Muammoni hal qilish uchun quyidagilarni tekshirib ko'ring: - 1.) Siz kabi setni saqlash uchun turli xil kalitlarni bering

 edit.putStringSet("your_set", set);

2.) foydalanish

 edit.commit()

Setsizni olish uchun quyidagilarni tekshirib ko'ring:

SharedPreferences prefs = getContext().getSharedPreferences("user_and_score", Context.MODE_PRIVATE);

Set newSet = prefs.getStringSet("your_set", new HashSet());

Shunday qilib, saqlangan setni newSet-da olishingiz mumkin. Rahmat!

1
qo'shib qo'ydi
Men hamma narsani qutqaraman, lekin men ololmayman
qo'shib qo'ydi muallif Rodriquez, manba
Hamma narsa hozir yaxshi ishlaydi. Men sizning javobingizni qabul qilaman, shunchalik minnatdorman :)
qo'shib qo'ydi muallif Rodriquez, manba
Yuqorida aytib o'tganimdek, getStringSet() ni sinab ko'rdingizmi?
qo'shib qo'ydi muallif Himanshu Shrimali, manba
Arzimaydi :-)
qo'shib qo'ydi muallif Himanshu Shrimali, manba

Muammoni hal qilish uchun quyidagilarni tekshirib ko'ring: - 1.) Siz kabi setni saqlash uchun turli xil kalitlarni bering

 edit.putStringSet("your_set", set);

2.) foydalanish

 edit.commit()

Setsizni olish uchun quyidagilarni tekshirib ko'ring:

SharedPreferences prefs = getContext().getSharedPreferences("user_and_score", Context.MODE_PRIVATE);

Set newSet = prefs.getStringSet("your_set", new HashSet());

Shunday qilib, saqlangan setni newSet-da olishingiz mumkin. Rahmat!

1
qo'shib qo'ydi
Men hamma narsani qutqaraman, lekin men ololmayman
qo'shib qo'ydi muallif Rodriquez, manba
Hamma narsa hozir yaxshi ishlaydi. Men sizning javobingizni qabul qilaman, shunchalik minnatdorman :)
qo'shib qo'ydi muallif Rodriquez, manba
Yuqorida aytib o'tganimdek, getStringSet() ni sinab ko'rdingizmi?
qo'shib qo'ydi muallif Himanshu Shrimali, manba
Arzimaydi :-)
qo'shib qo'ydi muallif Himanshu Shrimali, manba

Buni ko'ring,

dependencies {
    compile 'com.google.code.gson:gson:2.2.+'
}       

Qiymatlarni belgilang

List leaderBoardList   = new ArrayList<>();

Gson gson = new Gson();
String jsonText = gson.toJson(leaderBoardList);
prefsEditor.putString("key", jsonText);
prefsEditor.commit();

Qiymatlarni qaytarib olish

List leaderBoardList   = new ArrayList<>();
Gson gson = new Gson();
String jsonText = Prefs.getString("key", null);
String[] text = gson.fromJson(jsonText, String[].class);  //EDIT: gso to gson

leaderBoardList  = Arrays.asList(text);
leaderBoardList  = new ArrayList(leaderBoardList );
0
qo'shib qo'ydi
Agar xato topsam sinab ko'rishim kerak: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Bir satr kutilgan, lekin 1-qatorda 1-ustunda BEGIN_ARRAY
qo'shib qo'ydi muallif Rodriquez, manba

Umumiy afzalliklarim bilan shu kabi muammolarga duch keldim, bundan oldin saqlangan Stringni topolmadim.

Men uchun ishlaydigan yechim SharedPrefs misolini PreferenceManager orqali olish edi:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());

Va keyin String to'siq bo'lsin:

Set set = sharedPref.getStringSet("your_set", new HashSet());
0
qo'shib qo'ydi

Eng yaxshi usul:

1) ro'yxatingizni JsonArray ga aylantiring jsonArrayPref deb o'zgartiring

2) jsonArrayPref.toString() ni umumiy afzalliklarga saqlash

3) ushbu ro'yxatga ega bo'lishni xohlasangiz, jsonArrayPref ni mag'lubiyat shaklidagi afzalliklardan oling

4) va keyin uni JsonArray ga o'zgartiring va sizga ma'lumotlarni taqdim eting va undan foydalaning

0
qo'shib qo'ydi

Javobni bu yerda topishingiz mumkin Save ArrayList to SharedPreferences . Menimcha, sizda muammo bor

edit.apply();

harakat qilib ko'ring

edit.commit();
0
qo'shib qo'ydi
Bog'ning OXning savoliga javob berishiga qaramasdan, linklarga tegishli javoblarni yozish tavsiya etilmaydi. Kelgusida havola o'zgartirilsa, javob kelajakdagi foydalanuvchilar uchun foydali bo'lmaydi. Buning o'rniga javobingizdagi savolga javob beradigan tegishli qismlarni joylashtiring va havolani havola qilib kiriting.
qo'shib qo'ydi muallif Prerak Sola, manba