Я работаю над сохранением объекта счетчика в моей базе данных SQLite, мне удалось заставить его отображаться на моем адаптере, но каждый раз, когда я закрываю свое приложение и снова открываю, он говорит null
, но когда я перехожу в другое место и возвращаюсь назадэто восстанавливает, ниже мой код, что я делаю не так?
public class ExpenseDetailFragment extends Fragment {
private View view;
private ExpenseData selectedExpenseData;
private final int PICKER_REQUEST = 1;
private Activity activity = null;
private String currency = "USD";
private Spinner currencyd;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_expense_detail, container, false);
activity = this.getActivity();
selectedExpenseData = (ExpenseData) getArguments().getSerializable("selectedExpenseData");
ImageButton storeExpenseButton = getActivity().findViewById(R.id.addExpense);
Button deleteButton = view.findViewById(R.id.deleteButton);
currencyd = getActivity().findViewById(R.id.currency_spinner);
storeExpenseButton.setImageResource(R.drawable.ic_action_done);
currencyd.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
currency = adapterView.getItemAtPosition(i).toString();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
//adapterView.getLastVisiblePosition();
}
});
//button
storeExpenseButton.setOnClickListener(v -> {
String cur = currencyd.getSelectedItem().toString();
TextView amountTextView1 = getActivity().findViewById(R.id.amount);
try {
double amount = Double.valueOf(amountTextView1.getText().toString());
selectedExpenseData.setExpenseAmount(amount);
} catch (NumberFormatException e) {
Toast.makeText(getContext(), "Budget created", Toast.LENGTH_SHORT).show();
}
selectedExpenseData.setCurrency(cur);
if (selectedExpenseData.getId() != 0)
updateExpense(v, selectedExpenseData);
else
storeExpense(v, selectedExpenseData);
});
return view;
}
private void storeExpense(View view, ExpenseData expenseData) {
ContentValues values = new ContentValues();
values.put(ExpensesContract.ExpenseEntry.COLUMN_EXPENSE_CURRENCY, expenseData.getCurrency());
if (uri == null) {
Toast.makeText(this.getActivity(), R.string.editor_save_expense_failed,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this.getActivity(), R.string.editor_save_expense_successful,
Toast.LENGTH_SHORT).show();
checkBudgets(expenseData.getExpenseName());
}
getActivity().finish();
Intent intent = new Intent(this.getActivity(), MainActivity.class); //remove this after fix
startActivity(intent);//remove this after fix
}
private void updateExpense(@SuppressWarnings("unused") View view, ExpenseData expenseData) {
Uri currentExpenseURI = ContentUris.withAppendedId(ExpensesContract.ExpenseEntry.CONTENT_URI, expenseData.getId());
ContentValues values = new ContentValues();
values.put(ExpensesContract.ExpenseEntry.COLUMN_EXPENSE_CURRENCY, expenseData.getCurrency());
int rowsAffected = getActivity().getContentResolver().update(currentExpenseURI, values, null, null);
if (rowsAffected == 0) {
Toast.makeText(this.getActivity(), getString(R.string.editor_update_expense_failed),
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this.getContext(), getString(R.string.editor_update_expense_successful),
Toast.LENGTH_SHORT).show();
checkBudgets(expenseData.getExpenseName());
}
getActivity().finish();
Intent intent = new Intent(this.getActivity(), MainActivity.class); //remove this after fix
startActivity(intent);//remove this after fix
}