android instance 参数,Android DialogFragment newInstance可选参数

我一直在关注我的项目中使用DialogFragment的官方android developer docu和this one。因为我必须将数据传递给DialogFragment才能创建多选列表,所以我通过newInstance方法(传递项目)从MainActivity内部调用DialogFragment,并得到正确的结果。现在,我想传递另一个参数,即DialogFragment的数据,但它必须是可选的,因为我不需要一直传递它。我有办法实现这一目标吗?Android DialogFragment newInstance可选参数

编辑:

所以我把文章从下面的意见,并创造了一个二传手,并通过我希望传递给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();

}

2017-01-01

b101

+1

标准也许 –

2017-01-01 18:46:39

+1

刚刚通过null如何?当它不可用 –

+0

@JawadLeWywadi可能吗?如何使用setter函数 'DialogFragment newFragment = MyDialogFragment.newInstance(items);'然后'newFragment.setMySetter(value);'?喜欢这个 ?? –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值