Я слежу за официальными android developer docu и this one за использование DialogFragment внутри моего проекта. пока что так хорошо, так как я должен передать данные в DialogFragment, чтобы создать список многозадачных, я вызываю DialogFragment изнутри моей MainActivity с помощью метода newInstance
(передавая элементы), и я получаю правильный результат. Теперь я хотел бы передать еще один аргумент, а также данные для DialogFragment, но он должен быть необязательным, поскольку мне не нужно передавать его все время. Есть ли способ достичь этого?Android DialogFragment newInstance необязательные параметры
EDIT:
поэтому я взял советы от комментариев ниже и создал сеттер и передал элементы я хотел перейти к DiagramFragment. Это сработало отлично, к сожалению, это не помогло мне решить мою проблему. Причина, по которой я хотел передать вторую информацию, - это то, что я думал, если пользователь открывает диалоговое окно DialogFragment и делает выбор, и после этого снова открывает DialogFragment, его последний выбор ушел. Я хотел проверить флажки, которые он уже проверил программным путем, передав проверочно один раз обратно в DialogFragment, а затем вернув индексы обратно в mSelectedItems
, - но даже если индексы установлены правильно, флажки остаются неизменными .. есть ли обходной путь?
static MyDialogFragment newInstance(int num) {
MyDialogFragment f = new MyDialogFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);
return f;
}
...
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mSelectedItems = new ArrayList(); // Where we track the selected items
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Set the dialog title
builder.setTitle(R.string.pick_toppings)
// Specify the list array, the items to be selected by default (null for none),
// and the listener through which to receive callbacks when items are selected
.setMultiChoiceItems(R.array.toppings, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
if (isChecked) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
// Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
})
// Set the action buttons
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// User clicked OK, so save the mSelectedItems results somewhere
// or return them to the component that opened the dialog
...
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
...
}
});
return builder.create();
}
сеттеры возможно –
Как насчет того, чтобы просто пропустить null? Когда он недоступен –
@JawadLeWywadi, что возможно? как бы я использовал эту функцию setter 'DialogFragment newFragment = MyDialogFragment.newInstance (items);', а затем 'newFragment.setMySetter (value);'? как это ?? – b101