2017-08-17 37 views
0

我有一个对话框片段,它有六个按钮。当用户单击按钮时,颜色选择器打开。然后颜色数据传递给第一个对话框片段和单个颜色在按钮上设置。 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); 
    } 
} 

预先感谢您。

+0

分享整个嵌套类,请 – ImAtWar

+0

您可以发布您的UI它的外观 –

+0

HTTPS的画面://驱动。 google.com/file/d/0Bx4pIec6rk6BZGdySEI2ejlRTmVzVmlfQ0s1ZzVyWVJBMlFZ/view –

回答

0

你只是实现了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

相关问题