DialogFragment突然更改大小

DialogFragment突然更改大小

问题描述:

我有一个扩展DialogFragment的类。当我点击一个按钮时,对话框显示。第一次是正常的,我的意思是大小是对话框的布局之一。但是,当我关闭对话框并单击第二,第三,...时间的按钮时,对话框将覆盖所有屏幕,我不知道为什么。所有的方法总是被调用,为什么会发生这种情况?DialogFragment突然更改大小

这里是DialogFragment执行:

public class DialogFragmentAzione extends DialogFragment 
{ 
private View view; 
private SetVocabulary setVocabulary; 
private LinkedList<String> linkedListGruppi; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    if(getArguments().getSerializable(Constants.codiceArgomentoDialogFragment) instanceof Set) 
     setVocabulary = (SetVocabulary) getArguments().getSerializable(Constants.codiceArgomentoDialogFragment); 
    else 
     linkedListGruppi = (LinkedList<String>) getArguments().getSerializable(Constants.codiceArgomentoDialogFragment); 
    view = inflater.inflate(R.layout.layoutdialogfragment, container); 
    view.findViewById(R.id.aggiungiDialog).setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      EditText editText = (EditText)view.findViewById(R.id.editTextAggiungi); 
      String text = editText.getText().toString(); 
      if(text.contains(" ")||text.contains(".")||text.contains(",")||text.contains(";")||text.contains("-")||text.contains("_") 
        ||text.contains(":")||text.contains("@")||text.contains("ç")||text.contains("°")||text.contains("#")||text.contains("§") 
        ||text.contains("{")||text.contains("}")||text.contains("[")||text.contains("]")||text.contains("(")||text.contains(")") 
        ||text.contains("(")||text.contains("!")||text.contains("%")||text.contains("£")||text.contains("&")||text.contains("/") 
        ||text.contains("=")||text.contains("?")||text.contains("'")||text.contains("^")||text.contains("<")||text.contains(">") 
        ||text.contains("<")||text.contains("|")||text.contains("€")||text.contains("+")||text.contains("*")) 
       Toast.makeText(getActivity(),"Il testo contiene caratteri non ammessi",Toast.LENGTH_SHORT).show(); 
      else if(text.length()<3) 
       Toast.makeText(getActivity(),"Il testo è troppo corto",Toast.LENGTH_SHORT).show(); 
      else if(text.length()>15) 
       Toast.makeText(getActivity(),"Il testo è troppo lungo",Toast.LENGTH_SHORT).show(); 
      else 
      { 
       if(setVocabulary!=null) 
        setVocabulary.add(text); 
       else 
        linkedListGruppi.add(text); 
       dismiss(); 
      } 
     } 
    }); 
    return view; 
} 

@Override 
public void onActivityCreated(Bundle bundle) 
{ 
    getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE)); 
    setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme); 
    super.onActivityCreated(bundle); 
} 
} 

下面是对话的创作:

dialogFragment = new DialogFragmentAzione(); 
bundleFragment = new Bundle(); 
bundleFragment.putSerializable(Constants.codiceArgomentoDialogFragment,setVocabulary); 
dialogFragment.setArguments(bundleFragment); 

getActivity().findViewById(R.id.floatingActionButton).setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      dialogFragment.show(getActivity().getFragmentManager().beginTransaction(), "Dialog"); 
     } 
    }); 

第4行exectued只有一次

+0

在视图声明中放置了false ..'view = inflater.inflate(R.layout.layoutdialogfragment,container,false); '它将停止将对话框片段附加到根布局.. –

+0

@AalapPatel它不起作用 – Tosch

删除这行代码:

setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme); 

以这种方式,对话框的大小始终相同。