2016-12-19 7 views
0

DialogFragmentポジティブ/ネガティブボタンを追加する必要があります。 これは、これらのボタンのないダイアログです: enter image description hereonCreateDialogでRecyclerViewの問題があるDialogFragment

が、これは私がそれを実装するために使用したコードです:

public class RecyclerColorsDialogFragment extends DialogFragment 
{ 

RecyclerView recyclerView; 
RecyclerColorsDialogAdapter adapter; 
ArrayList<Boolean>colorChecked; 
ArrayList<String>items; 
ArrayList<String>colors; 

public Dialog onCreateDialog(Bundle savedInstanceState) 
{ 
    Dialog dialog = new Dialog(getActivity()); 
    dialog.setCancelable(true); 



    return dialog; 
} 

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
{ 
    View rootView = inflater.inflate(R.layout.fragment_recycler_colors_dialog, container, false); 

    colorChecked = new ArrayList<>(12); 
    colors = new ArrayList<>(12); 

    String[] cItems = {getString(R.string.red),getString(R.string.green), getString(R.string.blue),getString(R.string.yellow), 
    getString(R.string.azur),getString(R.string.black),getString(R.string.white),getString(R.string.gray),getString(R.string.brown), 
    getString(R.string.pink),getString(R.string.purple)}; 

    items = new ArrayList<>(Arrays.asList(cItems)); 

    //inizializzo i check a false 
    for (int i = 0; i< items.size(); i++) 
    colorChecked.add(true); 

    recyclerView = (RecyclerView)rootView.findViewById(R.id.recColors); 
    adapter = new RecyclerColorsDialogAdapter(getActivity(),colors,colorChecked,items); 

    final Dialog dialog = getDialog(); 

    dialog.setCancelable(true); 
    dialog.setTitle("Add a picture to your aircraft:"); 

    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    recyclerView.addItemDecoration(new SimpleDividerItemDecoration(getActivity())); 
    recyclerView.setAdapter(adapter); 



    return rootView; 
} 

@Override 
public void onCancel(DialogInterface dialog) 
{ 
    super.onCancel(dialog); 
} 

@Override 
public void onDismiss(DialogInterface dialog) { 
    super.onDismiss(dialog); 
    dialog.cancel(); 
} 
} 

、それは他の断片からの呼び出しです:

final RecyclerColorsDialogFragment dialog = new RecyclerColorsDialogFragment(); 
    dialog.setTargetFragment(AddAicraftFivePartFragment.this, 2); 


    logo.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      FragmentManager manager = getActivity().getSupportFragmentManager(); 
      dialog.show(manager, "PATAG"); 

onCreateDialog()で試してみると問題があります。

public Dialog onCreateDialog(Bundle savedInstanceState) 
{ 
//  Dialog dialog = new Dialog(getActivity()); 
//  dialog.setCancelable(true); 

return new AlertDialog.Builder(getActivity()) 
      .setCancelable(true) 
      .setPositiveButton("OK", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          // do something... 
         } 
        } 
      ) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          dialog.dismiss(); 
         } 
        } 
      ).create(); 


    // return dialog; 
} 

表示されているため、 enter image description here

リサイクル可能なアイテムはありません。
どうすれば修正できますか?

おかげ

答えて

0

はのonCreateからonCreateDialogにコードを置きます。次に、rootViewをダイアログビューに設定します。そして、onCreate()メソッドを削除してください。

@Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     android.app.AlertDialog.Builder dialog = new android.app.AlertDialog.Builder(getActivity()). 
       setTitle("Add a picture to your aircraft:").setMessage(mMessage). 
       setPositiveButton(getString(R.string.discard), new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         getActivity().finish(); 
        } 
       }).setNegativeButton(getString(android.R.string.cancel), new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 

//custom view 


View rootView = inflater.inflate(R.layout.fragment_recycler_colors_dialog, container, false); 

    colorChecked = new ArrayList<>(12); 
    colors = new ArrayList<>(12); 

    String[] cItems = {getString(R.string.red),getString(R.string.green), getString(R.string.blue),getString(R.string.yellow), 
    getString(R.string.azur),getString(R.string.black),getString(R.string.white),getString(R.string.gray),getString(R.string.brown), 
    getString(R.string.pink),getString(R.string.purple)}; 

    items = new ArrayList<>(Arrays.asList(cItems)); 

    //inizializzo i check a false 
    for (int i = 0; i< items.size(); i++) 
    colorChecked.add(true); 

    recyclerView = (RecyclerView)rootView.findViewById(R.id.recColors); 
    adapter = new RecyclerColorsDialogAdapter(getActivity(),colors,colorChecked,items); 




    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    recyclerView.addItemDecoration(new SimpleDividerItemDecoration(getActivity())); 
    recyclerView.setAdapter(adapter); 
     dialog.setView(rootView) 
     return dialog.create(); 
    } 
+0

修正を行って、今は仕事です。ありがとうございます! – ste9206

+0

WHAAAT ?? 'onCreateView'のすべてのコードを' onCreateDialog'に入れると、レイアウトをどのように膨張させるのですか?ルートビューはどこから来たのですか?どのような 'inflater.inflate'変数から取る? 'コンテナ'はどこから来ますか?これは解決策としてどのように受け入れられるのでしょうか? – busuu

関連する問題