5

Ho un DialogFragment:Come rendere DialogFragment modale?

public static class CharacteristicDialog extends DialogFragment { 
     int mNum; 

     static CharacteristicDialog newInstance(int num) { 
      CharacteristicDialog f = new CharacteristicDialog();    
      Bundle args = new Bundle(); 
      args.putInt("num", num); 
      f.setArguments(args); 
      return f; 
     } 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      mNum = getArguments().getInt("num"); 
      setStyle(STYLE_NO_INPUT, 0);   
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View v = inflater.inflate(R.layout.characteristic_dialog, container, false); 
      v.setOnClickListener(new OnClickListener() {     
      @Override 
      public void onClick(View v) { 
       dismiss(); 
      } 
     }); 
    } 

creo nel mio frammento principale in questo modo:

 DialogFragment newFragment = CharacteristicDialog.newInstance(v.getId()); 
     newFragment.setShowsDialog(true); 
     newFragment.show(getFragmentManager(), "dialog"); 

Essa mostra bene, ma non è modale (posso cliccare sui lati e fare azioni sul mio frammento principale dietro il dialogo).

Come si modifica il modal?

Grazie

+0

'Posso fare clic sui lati e creare azioni sul mio frammento principale dietro la finestra di dialogo 'Sembra davvero strano ... Stai usando frammenti nativi o libreria di supporto? ActionBarSherlock? – Falmarri

+0

Sto usando il supporto lib, no Actionbarsherlock. –

risposta

3

Basta cambiare STYLE_NO_INPUT то STYLE_NORMAL nel vostro metodo di setStyle(). Per ulteriori informazioni sugli stili e sui temi di DialogFragment, consulta i documenti: http://developer.android.com/reference/android/app/DialogFragment.html

+0

E 'stato grazie. Ho usato STYLE_NO_FRAME invece del normale perché è una finestra di dialogo personalizzata. –

+0

Non funziona per me. – stevehs17

5

Questo ha funzionato per me.

myDialogFragment.setCancelable(false);