Cześć, w aplikacji używam pomiędzy różnymi aktywnościami Mapy.
Map<String, Integer> barcodeMap;
barcodeMap = new HashMap<String, Integer>();
do zapisu używam metody:
void saveHashMapToMemory(){
try {
FileOutputStream fileOutputStream = openFileOutput("BarcodesMap", MODE_PRIVATE);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(barcodeMap);
objectOutputStream.flush();
objectOutputStream.close();
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
do odczytu:
void loadHashMapFromMemory() throws ClassNotFoundException {
File file = getApplicationContext().getFileStreamPath("BarcodesMap");
if (file.exists()) {
try {
FileInputStream fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
barcodeMap = (Map) objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
Toast.makeText(getApplicationContext(), "File don't exist!", Toast.LENGTH_SHORT).show();
}
}
Aplikacja działa i kompiluje sie. Ale gdy chce utworzyć plik APK, to otrzymuję błąd że używam przestarzałego API :
C:\AndroidWorkspace\...\SaveActivity.java:
uses or overrides a deprecated API.
Recompile with -Xlint:deprecation for details.
Some input files use unchecked or unsafe operations.
Recompile with -Xlint:unchecked for details.
sądze że problem jest w linijce:
barcodeMap = (Map) objectInputStream.readObject();
W jaki sposób powinno się to zrobić? Proszę o pomoc
wzorowałem sie na tym:
https://stackoverflow.com/questions/17728449/how-can-i-store-a-data-structure-such-as-a-hashmap-internally-in-android