2012-12-24 13 views
6

tôi đã tạo ra một DialogFragment và tôi muốn thêm một EditText nhưng khi tôi cố gắng và thêm nó như thế này:Làm cách nào để thêm EditText vào DialogFragment?

final EditText input = new EditText(this); 

tôi nhận được một lỗi trên "này" nói "Các nhà xây dựng EditText (EncryptionDialogFragment) được chưa xác định".

Mục tiêu cuối cùng của tôi là để người dùng nhập mật khẩu của họ theo cách này.

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(); 
} 

}

Trả lời

6

Sử dụng getActivity()

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

và không sử dụng nó trong lĩnh vực, khởi tạo nó trong onCreateView nơi getActivity sẽ không trở về null

+0

Cảm ơn bạn! Tôi chỉ phải đợi 10 phút để chấp nhận câu trả lời của bạn. – GreekOphion

1

this nhu cầu trở thành một bối cảnh , tức là Hoạt động. Bạn không thể tạo EditText trước khi đoạn của bạn được đính kèm vào một hoạt động. Trong onCreateDialog bạn có thể thực hiện new EditText(getActivity()).