2017-11-13 7 views
0

私はサポートライブラリからBottomSheetDialogFragmentを使用していますが、関数setupDialog()はライブラリグループ内でのみ使用するよう警告しています。しかし、この機能は、私は私のダイアログを初期化する場所である:私はスーパーメソッドを使用していますので、BottomSheetDialogFragment setupライブラリグループに限定されたダイアログ

@Override 
public void setupDialog(final Dialog dialog, int style) { 
    super.setupDialog(dialog, style); 
    FragmentArgs.inject(this); 

    dialog.setOnShowListener(dialogINterface -> { 
     if(dialog.getWindow() != null) { 
      dialog.getWindow().setLayout(
        ViewGroup.LayoutParams.WRAP_CONTENT, 
        ViewGroup.LayoutParams.MATCH_PARENT); 
     } 
    }); 

    BottomSheetStatisticsExportBinding binding = DataBindingUtil.inflate(
      LayoutInflater.from(getContext()), 
      R.layout.bottom_sheet_statistics_export, 
      null, 
      false 
    ); 

    View contentView = binding.getRoot(); 
    dialog.setContentView(contentView); 

    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams(); 
    CoordinatorLayout.Behavior behavior = params.getBehavior(); 

    if(behavior != null && behavior instanceof BottomSheetBehavior) 
     ((BottomSheetBehavior) behavior).setBottomSheetCallback(bottomSheetBehaviorCallback); 

    for (Export export : exports) 
     binding.flexbox.addView(new ExportItemView(getContext(), export)); 
} 

警告があります。しかし、私は代わりに何をすべきですか?コードを別の関数(onCreateDialog()onResume() ...?)内に移動すると、スーパーへの呼び出しを取り除かなければなりませんか?

誰でも知っていますか?

答えて

1

が、私は別の関数内で自分のコードを移動する必要があります(onCreateDialog()、 onResume()...?)

はい。 DialogFragment documentationBottomSheetDialogFragment)に示すとおり、onCreateView()を使用してダイアログを設定する必要があります。

このメソッドから返されたViewは、onCreateDialog()によって提供されるダイアログのコンテンツビューとして設定されます。そして、onCreateView()内からgetDialog()メソッドを使用して、前述のDialogを調整することができます。


onCreateDialog()はデフォルトDialogを置き換えるために使用されるだろう。あなたの場合はおそらくやりたくないことでしょう。それが方法を使用して、デフォルトのDialogBottomSheetDialogに置き換えることを考えている(実際は、唯一の方法BottomSheetDialogFragmentのオーバーライドです)。

関連する問題