如何传递嵌套对话框片段中的数据
问题描述:
我有一个对话框片段,它有六个按钮。当用户单击按钮时,颜色选择器打开。然后颜色数据传递给第一个对话框片段和单个颜色在按钮上设置。 Dialog Fragment 1。 问题是当我声明接口方法时,我能够获取片段或活动中的数据,但无法将数据获取到对话框片段1中。 如何将数据从对话框片段2传递到对话框片段1 ?如何传递嵌套对话框片段中的数据
我想将被触及的RGB颜色传递给第一个对话框片段。
是否可以使用颜色模型中的getter和setter发送数据,如果是的话怎么做?
builder.setView(layout)
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
ColorDialog.this.getDialog().cancel();
mListener.onDialogNegativeClick(ColorDialog.this);//calling the listener
}
})
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
ColorModel colormodel = new ColorModel();
colormodel.setColorData(ColorData);
mListener.onDialogPositiveClick(ColorDialog.this);
mListener.receiveColorData(touchedRGB); //calling the listener
}
});
return builder.create();
}
对话片段1
public class addMain extends DialogFragment implements View.OnClickListener,ColorDialog.ColorDialogListener {
Button color1,color2,color3,color4,color5,color6,canceladd,okadd;
SeekBar seek = null;
public int touchedRGB = 000000;
Integer[] coloranimchange={0,0,0,0,0,0},customvisibility={0,0,0,0,0,0};
Button scenes;
EditText custtomname;
String theme;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.ColoePickerDialogStyle);
LayoutInflater inflater = getActivity().getLayoutInflater();
View layout = inflater.inflate(R.layout.dialogadd, null);
color1 = (Button) layout.findViewById(R.id.addcolor1);
color2 = (Button) layout.findViewById(R.id.addcolor2);
color3 = (Button) layout.findViewById(R.id.addcolor3);
color4 = (Button) layout.findViewById(R.id.addcolor4);
color5 = (Button) layout.findViewById(R.id.addcolor5);
color6 = (Button) layout.findViewById(R.id.addcolor6);
custtomname = (EditText) layout.findViewById(R.id.themename);
color1.setOnClickListener(this);
color2.setOnClickListener(this);
color3.setOnClickListener(this);
color4.setOnClickListener(this);
color5.setOnClickListener(this);
color6.setOnClickListener(this);
builder.setView(layout)
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
addMain.this.getDialog().cancel();
}
})
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
}
});
return builder.create();
}
public static String[] getArray(String input) {
return input.split("\\|\\$\\|SEPARATOR\\|\\$\\|");
}
@Override
public void onClick(View view) {
ColorDialog dialogFragment = new ColorDialog();
dialogFragment.show(getChildFragmentManager(), "ColorSelect");
}
@Override
public void onDialogPositiveClick(DialogFragment dialog) {
}
@Override
public void onDialogNegativeClick(DialogFragment dialog) {
}
@Override
public void receiveColorData(int ColorData) {
String col = String.valueOf(ColorData);
Log.v("col",col);
}
}
预先感谢您。
答
你只是实现了ColorDialog.ColorDialogListener,但你忘记了将ColorDialog设置回调。
对话片段1
ColorDialog dialogFragment = new ColorDialog();
dialogFragment.setCallBack(this);
dialogFragment.show(getChildFragmentManager(), "ColorSelect");
ColorDialog类
public ColorDialog extends DialogFragment {
private ColorDialogListener mCallback;
public void setCallBack(ColorDialogListener listener) {
this.mCallback = listener;
}
public interface ColorDialogListener {
public void onColorSelect(ColorModel model);
}
/** Now you call back is ready to send data**/
mCallback.onColorSelect(colorModel)
}
+0
感谢它的工作 –
+0
这太棒了。欢迎。 – prakash
分享整个嵌套类,请 – ImAtWar
您可以发布您的UI它的外观 –
HTTPS的画面://驱动。 google.com/file/d/0Bx4pIec6rk6BZGdySEI2ejlRTmVzVmlfQ0s1ZzVyWVJBMlFZ/view –