Я успешно сохранил элемент счетчика на БД Sqlite, но когда я снова открываю свое приложение, объект счетчика читает ноль - PullRequest
0 голосов
/ 21 ноября 2018

Я работаю над сохранением объекта счетчика в моей базе данных 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
    }
...