-1

i want to create add data to SQL lite with pop up dialog, in dialog just have one textedit and buttom save. in Snackbar usually use setAction(). but in dialog I don't know how to call "AddData".

    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.list_category_expanses, container, false);

        mTextMessage = (TextView) view.findViewById(R.id.message);

        textSubcategoryExpanses = (AppCompatTextView) view.findViewById(R.id.textSubcategoryExpanses);
        recyclerViewCategoryExpanses = (RecyclerView) view.findViewById(R.id.recyclerViewCategoryExpanses);

        Button btn1 = view.findViewById(R.id.buttonListCategoryExpanses);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final Dialog fbDialogue = new Dialog(getActivity());
                fbDialogue.setContentView(R.layout.layout_add_category_expanses);
                fbDialogue.setCancelable(true);
                fbDialogue.show();

            }
        });
        initObjects();
        return view;
    }

and i want to call this code AddData to onCreate, this code to save text in sqlLite.

public View.OnClickListener AddData = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            View customLayoutView = View.inflate(getActivity(), R.layout.layout_add_category_expanses, null);
            final EditText edNim = customLayoutView.findViewById(R.id.inputcategoryexpanses);
            final AlertDialog.Builder builder;
            builder = new AlertDialog.Builder(getActivity());
            builder.setCancelable(true);
            builder.setTitle(R.string.strTitleAlert);
            builder.setView(customLayoutView);
            builder.setPositiveButton(R.string.btnKlikstr, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    String nim = edNim.getText().toString();
                    if (databaseHelper.addCategoryExpanses(new CategoryExpanses(nim))) {
                        getDataFromSQLite();
                        Toast.makeText(getActivity(), "Data berhasil disimpan", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getActivity(), "Data gagal disimpan", Toast.LENGTH_LONG).show();
                    }
                    dialogInterface.dismiss();
                }
            });
            AlertDialog alertDialog = builder.create();
            alertDialog.show();
        }
    };

Please help me solve this problem. thank you.

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
kputri
  • 63
  • 1
  • 5
  • 18

1 Answers1

0

You must do some like:

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.list_category_expanses, container, false);

    mTextMessage = (TextView) view.findViewById(R.id.message);

    textSubcategoryExpanses = (AppCompatTextView) view.findViewById(R.id.textSubcategoryExpanses);
    recyclerViewCategoryExpanses = (RecyclerView) view.findViewById(R.id.recyclerViewCategoryExpanses);

    Button btn1 = view.findViewById(R.id.buttonListCategoryExpanses);
    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            View customLayoutView = View.inflate(getActivity(), R.layout.layout_add_category_expanses, null);
            final EditText edNim = customLayoutView.findViewById(R.id.inputcategoryexpanses);
            final AlertDialog.Builder builder;
            builder = new AlertDialog.Builder(getActivity());
            builder.setCancelable(true);
            builder.setTitle(R.string.strTitleAlert);
            builder.setView(customLayoutView);
            builder.setPositiveButton(R.string.btnKlikstr, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    String nim = edNim.getText().toString();
                    if (databaseHelper.addCategoryExpanses(new CategoryExpanses(nim))) {
                        getDataFromSQLite();
                        Toast.makeText(getActivity(), "Data berhasil disimpan", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getActivity(), "Data gagal disimpan", Toast.LENGTH_LONG).show();
                    }
                    dialogInterface.dismiss();
                }
            });
            AlertDialog alertDialog = builder.create();
            alertDialog.show();

        }
    });
    initObjects();
    return view;
}
  • thank you but i have new error : android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed (code 1555 SQLITE_CONSTRAINT_PRIMARYKEY) – kputri Dec 15 '18 at 20:58