2012-12-24 22 views
6

Stworzyłem DialogFragment i chciałbym dodać EditText ale gdy próbuję dodać tak:Jak dodać EditText do DialogFragment?

final EditText input = new EditText(this); 

otrzymuję komunikat o błędzie na „to” mówi „konstruktor EditText (EncryptionDialogFragment) jest niezdefiniowany".

Moim ostatecznym celem jest, aby użytkownik wprowadził swoje hasło w ten sposób.

public class EncryptionDialogFragment extends DialogFragment { 
    final EditText input = new EditText(this); 
    static EncryptionDialogFragment newInstance(String title){ 
     EncryptionDialogFragment fragment = new EncryptionDialogFragment(); 
     Bundle args = new Bundle(); 
     args.putString("title", title); 
     fragment.setArguments(args); 
     return fragment; 
    } 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new AlertDialog.Builder(getActivity()) 
     .setIcon(R.drawable.ic_launcher) 
     .setTitle("Enter Password:") 
     .setView(input) 
     .setPositiveButton("OK", 
       new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, 
       int whichButton) { 
      ((MainActivity)getActivity()).doPositiveClick(); 
     } 
    }) 
    .setNegativeButton("Cancel", 
      new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, 
       int whichButton) { 
      ((MainActivity)getActivity()).doNegativeClick(); 
     } 
    }).create(); 
} 

}

Odpowiedz

6

Zastosowanie getActivity()

final EditText input = new EditText(getActivity()); 

i nie używać w dziedzinie zainicjować w onCreateView gdzie getActivity nie powróci zerowe

+0

Dziękujemy! Muszę tylko czekać 10 minut, aby zaakceptować twoją odpowiedź. – GreekOphion

1

this musi być kontekst , czyli działanie. Nie możesz utworzyć EditText przed dołączeniem fragmentu do działania. W onCreateDialog możesz wykonać new EditText(getActivity()).

Powiązane problemy