6

DialogFragment を作成しましたが、EditText を追加したいのですが、次のように追加しようとすると:

final EditText input = new EditText(this);

「this」で「コンストラクター EditText(EncryptionDialogFragment) が定義されていません」というエラーが表示されます。

私の最終的な目標は、ユーザーにこの方法でパスワードを入力させることです。

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

}

4

2 に答える 2

6

getActivity() を使用する

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

フィールドで使用しないでください。getActivity が null を返さない onCreateView で初期化します。

于 2012-12-24T16:59:24.433 に答える
1

thisコンテキスト、つまりアクティビティである必要があります。フラグメントがアクティビティにアタッチされる前に EditText を作成することはできません。でonCreateDialogできますnew EditText(getActivity())

于 2012-12-24T16:59:56.703 に答える