How to pass integers from the host fragment to an alertdialog's OnClickListener in android?

30 Views Asked by At

I have a fragment, which displays an alert dialog. The alert dialog contains a few buttons with OnClickListeners attached to them.

When clicked, I need to pass some integers into the OnClickListener. I tried the following:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setTitle(getActivity().getString(R.string.aufgabe_loeschen));
                builder.setItems(new CharSequence[]
                                {getActivity().getString(R.string.nur_diese_wiederholung_löschen),
                                        getActivity().getString(R.string.alle_wiederholungen_löschen)},
                        new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(getActivity(), "selectedAufgabeId: " + String.valueOf(HomeFragment.this.selectedAufgabeId), Toast.LENGTH_SHORT).show();
                                Toast.makeText(getActivity(), "selectedAufgabeInstanzId: " + String.valueOf(HomeFragment.this.selectedAufgabeInstanzId), Toast.LENGTH_SHORT).show();

                                // The 'which' argument contains the index position
                                // of the selected item
                                switch (which) {
                                    case 0:

                                        // nur_diese_wiederholung_löschen
                                        String aufgabeInstanzWhere = AufgabeInstanzContract.Columns._ID + " = ?";
                                        String[] aufgabeInstanzSelectionArgs = {String.valueOf(HomeFragment.this.selectedAufgabeInstanzId)};
                                        int rows = HomeFragment.this.getActivity().getApplicationContext().getContentResolver().delete(AufgabeInstanzContract.CONTENT_URI, aufgabeInstanzWhere, aufgabeInstanzSelectionArgs);
                                        loadAufgabenData();
                                        break;
                                    case 1:
                                        // alle_wiederholungen_löschen
                                        String aufgabeInstanzWhere2 = AufgabeInstanzContract.Columns.AUFGABE_ID + " = ?";
                                        String[] aufgabeInstanzSelectionArgs2 = {String.valueOf(HomeFragment.this.selectedAufgabeId)};
                                        int rows2 = HomeFragment.this.getActivity().getApplicationContext().getContentResolver().delete(AufgabeInstanzContract.CONTENT_URI, aufgabeInstanzWhere2, aufgabeInstanzSelectionArgs2);
                                        loadAufgabenData();

                                        Toast.makeText(getActivity(), "clicked 2", Toast.LENGTH_SHORT).show();
                                        break;
                                }
                            }
                        });

                builder.create().show();

selectedAufgabeId and selectedAufgabeInstanzId are public int properties, which change their values with the user interaction. However, both properties remain their initial values (values at the start of the fragment). How can I access their current values?

0

There are 0 best solutions below