Я могу поместить Stringset в SharedPreferences. Но когда я пытаюсь получить обратно, я не могу.
Я получаю установленный размер 0
Это мой код для сохранения ====>
открытый класс DefineProduct extends AppCompatActivity {
EditText productName, barcode,cost,price,size,color,notes;
Button saveBtn;
SharedPreferences sharedPref;
SharedPreferences.Editor editor ;
Set<String> set = new HashSet<>();
@SuppressLint("CommitPrefEdits")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_define_product);
sharedPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
editor = sharedPref.edit();
productName = findViewById(R.id.productNameText);
barcode = findViewById(R.id.barcodeEditText);
cost = findViewById(R.id.costText);
price = findViewById(R.id.priceText);
size = findViewById(R.id.sizeText);
color = findViewById(R.id.colorText);
notes = findViewById(R.id.notesText);
saveBtn = findViewById(R.id.saveBtn);
}
public void Save(View view){
set.add(productName.getText().toString());
set.add(barcode.getText().toString());
set.add(cost.getText().toString());
set.add(price.getText().toString());
set.add(size.getText().toString());
set.add(color.getText().toString());
set.add(notes.getText().toString());
editor.putStringSet(barcode.getText().toString(),set);
editor.commit();
Toast.makeText(getApplicationContext(),"Saved", Toast.LENGTH_LONG).show();
productName.setText("");
barcode.setText("");
cost.setText("");
price.setText("");
size.setText("");
color.setText("");
notes.setText("");
set.clear();
}
}
Это мой код для получения StringSet из другого действия =====>
public void onActivityResult(int requestCode,int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode,resultCode,data);
if(islem == 1 && resultCode == RESULT_OK && data != null){
Uri uri = data.getData();
try {
if(Build.VERSION.SDK_INT >= 28){
ImageDecoder.Source source = ImageDecoder.createSource(this.getContentResolver(), uri);
productImage = ImageDecoder.decodeBitmap(source);
productImageVeawer.setImageBitmap(productImage);
productImage.compress(Bitmap.CompressFormat.PNG, 10, byteArrayOutputStream);
}
else {
productImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
productImageVeawer.setImageBitmap(productImage);
}
} catch (IOException e) {
e.printStackTrace();
}
}
if(islem == 0 && resultCode == RESULT_OK && data != null){
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
productImageVeawer.setImageBitmap(bitmap);
bitmap.compress(Bitmap.CompressFormat.PNG, 10, byteArrayOutputStream);
}
if(islem == 2){
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
System.out.println("Scan result : " + result.getContents().toString());
Set<String> set = pref.getStringSet(result.getContents().toString(), new HashSet<String>());
System.out.println("***************************** Set size : " + set.size());
ArrayList<String> arrayList = new ArrayList<>();
arrayList.addAll(set);
// barcodeText.setText (arrayList.get (0) .toString ());// productNameText.setText (arrayList.get (1) .toString ());
}
super.onActivityResult(requestCode,resultCode, data);
}