如何将主机片段中的整数传递给android中的alertdialog的OnClickListener?

时间:2015-06-22 16:03:16

标签: android android-fragments onclicklistener android-alertdialog

我有一个片段,显示一个警告对话框。警告对话框包含几个附加了OnClickListeners的按钮。

单击时,我需要将一些整数传递给OnClickListener。我尝试了以下方法:

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和selectedAufgabeInstanzId是public int属性,它们通过用户交互更改其值。但是,两个属性都保持其初始值(片段开头的值)。 如何访问当前值?

0 个答案:

没有答案