Мне нужно, чтобы мое приложение сохраняло HashMaps, когда приложение закрывалось, и восстанавливало его информацию, которая хранится в 3 HashMaps и одном ArrayList.
Если я удаляю две строки с помощью >> мое приложение работаетхорошо, но данные нигде не хранятся, поэтому вам придется каждый раз регистрироваться.
Хотя, когда я добавляю эти строки, даже если вы регистрируетесь, вы не можете войти, что очень странно.Еще одна важная вещь: исключение не выдается.
Очень важная вещь: мои HashMap и ArrayList находятся в отдельных классах как статическое поле, чтобы быть доступными всем объектам и действиям
Этот метод является основным действием, с которого запускается мое приложение.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
btnLogin=findViewById(R.id.buttonLogin);
btnRegister=findViewById(R.id.buttonRegister);
presenter=new LoginPresenter(this,getApplicationContext());
>>presenter.loadDataToDB();
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
User curUser=presenter.login();
if(curUser!=null){
Intent intent=new Intent(Login_activity.this,
curUser.getUserType());
intent.putExtra("User",curUser.getMail());
startActivity(intent);
>>presenter.saveDataToDB();
finish();
}
}
});
Методы из класса LoginPresenter следующие
public void loadDataToDB(){
try {
EventManagersDB.loadAllManagers((HashMap<EventManager, String>)
readArrayListFromSD(context, EVENTMANAGERDB));
UsersDB.loadFromFile((HashMap<User, String>)
readArrayListFromSD(context, USERSDB));
ParentsDB.loadFromFile((HashMap<Parent, String>)
readArrayListFromSD(context, PARENTSDB));
EventsDB.setAllEvents((ArrayList<Event>)
readArrayListFromSD(context, EVENTSDB));
}catch (Exception e){
e.printStackTrace();
}
}
public void saveDataToDB(){
saveDataToSD(context,EVENTSDB, EventsDB.getAllEvents());
saveDataToSD(context,USERSDB,UsersDB.getAllUsers());
saveDataToSD(context,PARENTSDB, ParentsDB.getParents());
saveDataToSD(context,EVENTMANAGERDB,EventManagersDB.getAllEventManagers());
}
private void saveDataToSD(Context mContext, String filename, Object list){
try {
FileOutputStream fos = mContext.openFileOutput(filename + ".dat"
, mContext.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(list);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private Object readArrayListFromSD(Context mContext,String filename){
try {
FileInputStream fis = mContext.openFileInput(filename + ".dat");
ObjectInputStream ois = new ObjectInputStream(fis);
Object obj= ois.readObject();
fis.close();
return obj;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}