1

多くの調査を行い、見つけたすべてのライフサイクルメソッドを(私が思うに)試した後、私は本当に行き詰まっています:

が欲しいもの:基本的に、レイアウトファイル(「fragment_profile_header_username_dialog」)を提示する必要があるこのDialogFragment(「ProfileUsernameDialogFragment」)があります。このレイアウト ファイルには、いくつかの TextView といくつかの EditText があります。これらの EditTexts のテキストを自分のプログラムで取得した値に設定したいので、事前に設定することはできません。

私が持っているもの:

public class ProfileUsernameDialogFragment extends DialogFragment {

...

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    EditText usernameText = (EditText) this.getView().findViewById(R.id.username_field);
    usernameText.setText("TEST");
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Log.d(AppController.LOG_STRING, this.getClass().toString() + " - onCreateDialog  - START");
    AlertDialog.Builder builder = new AlertDialog.Builder(this.getActivity());
    View view = this.getActivity().getLayoutInflater().inflate(R.layout.fragment_profile_header_username_dialog, null);
    builder.setView(view);
    builder.setPositiveButton(SAVE_SETTINGS, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int whichButton) {
            // Tried this too:
            // EditText usernameText = (EditText)
            // ProfileUsernameDialogFragment.this.getView().findViewById(R.id.forename_label);
            // usernameText.setText("TEST");
        }
    });
    builder.setNegativeButton(ABORT_ACTION, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int whichButton) {
            dialog.dismiss();
        }
    });
    builder.setTitle(CHANGE_NAME_SETTINGS);
    Dialog dialog = builder.create();
    return dialog;
}
}

私が得るもの:私が試したfindViewById(R.id.username_field)のどの位置に関係なく、NullPointerExceptionです。(onCreate やその他の方法も試してみましたが、コードの場所以外に別の問題があるのではないかと考え始めましたが、実際には手がかりがありません) DialogFragments の NullPointers に関する少なくとも 6 つの同様の質問に従おうとしたので、高度なヘルプが必要だと思います^^

私はアンドロイドに完全に慣れていないので、よろしくお願いしますが、コンベンションのヒントなどは大歓迎です! 事前にt​​hx :)

4

3 に答える 3

2

必要なものは次のとおりです。

mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() {

        @Override
        public void onShow(final DialogInterface dialog) {

            final Button b = mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
            b.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(final View view) {

                    v.findViewById(R.id...)
                }
            });
        }
    });
            });
        }
    });
于 2013-11-14T13:29:01.803 に答える