2016-10-18 1 views
1

В onCreateView() Я попытался установить некоторые свойства, но DialogFragment по-прежнему уходит, выстукивая снаружи.Как я могу сделать BottomSheetDialogFragment немодальным?

Я хотел бы, чтобы фрагмент оставался почти все время, пока пользователь взаимодействует с другими частями приложения.

Это в классе, который простирается BottomSheetDialogFragment:

@Override 
    public View onCreateView(
     LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    ... 

    // makes background non-interactive 
    getDialog().getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); 

    // prevents dimming of background 
    getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 

    // no effect? 
    getDialog().setCanceledOnTouchOutside(false); 
    this.setCancelable(false); 

    return view; 
    } 
+0

Попробуйте 'setCancelable (false)'. –

+0

Извините, это было в моем исходном коде, но это не повлияло. Любые другие предложения или документы, которые могли бы это объяснить? – dmonopoly

+0

Почему 'this.setCancelable (false);' not 'getDialog(). SetCancelable (false);' (или наоборот все вызовы на этом объекте)? –

ответ

0

Код типа:

public class MyDialogFragment extends DialogFragment { 

     ... 

     @Override 
     public Dialog onCreateDialog(Bundle savedInstanceState) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 
      builder.setTitle(...) 
        .setMessage(...) 
        .setCancelable(false); 

      ... 

      Dialog dialog = builder.create(); 
      dialog.getWindow(); 
      return dialog; 
     } 

     ... 

    } 

работает для меня.

Смежные вопросы