2017-08-10 1 views
0

私はDialogFragmentを拡張するクラスを持っています。ボタンをクリックすると、ダイアログが表示されます。最初は正常です、サイズはダイアログのレイアウトの1つです。しかし、ダイアログを閉じて2番目、3番目、...ボタンのボタンをクリックすると、ダイアログにすべての画面が表示され、なぜそのようなことがわかりません。すべてのメソッドが常に呼び出されるので、なぜこれが起こりますか?ここで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行は、一度だけ

+0

ビューの宣言にfalseを入れます。 'view = inflater.inflate(R.layout.layoutdialogfragment、container、false); 'ダイアログのフラグメントをルートレイアウトに貼り付けるのを止めます。 –

+0

@AalapPatelは動作しません – Tosch

答えて

0

削除をexectuedていますこのコード行:

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

このように、ダイアログは常に同じサイズになります。

関連する問題