2017-08-17 6 views
0

6つのボタンを持つダイアログフラグメントがあります。ユーザーがボタンをクリックすると、カラーピッカーが開きます。次に、カラーデータが最初のダイアログフラグメントと個々の色に渡されますボタンに設定されています。 Dialog Fragment 1。 問題は、インターフェイスメソッドを宣言すると、フラグメントまたはアクティビティでデータを取得できますが、ダイアログフラグメント1にデータを取得できませんでした。 ダイアログフラグメント2からダイアログフラグメント1にデータを渡す方法?ネストされたダイアログのデータを渡す方法

touchedRGBカラーを最初のダイアログフラグメントに渡したいとします。

カラーモデルで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

は、あなたはそれが –

+0

HTTPSをどのように見えるか、あなたのUIの画像を投稿することができます。 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

関連する問題