Android Dialog InvocationTargetException - PullRequest
2 голосов
/ 16 июня 2011

Мне нужен диалог, в котором пользователь может ввести имя пользователя и пароль для регистрации своего приложения появится диалоговое окно, но если я введу какие-либо данные и нажму на кнопку подтверждения, появится исключение = ( Кто-нибудь знает, почему я получаю это исключение?

    Context mContext = getApplicationContext();
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.dialog_register_app, (ViewGroup) findViewById(R.id.layout_root));

    //Start building dialog
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(getString(R.string.dialog_register_app_title));
    builder.setView(layout);
    builder.setCancelable(false);
    builder.setPositiveButton(getString(R.string.dialog_register_confirm_button_text), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            //Auslesen der EditText
            EditText oUsername = (EditText) findViewById(R.id.edit_username);
            String strUsername = oUsername.getText().toString(); // This is line where exception is calling
            //Do something with strUsername
        }
   });
   AlertDialog alert = builder.create();
   alert.show();
...
...
...

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Это должно заставить его работать, так как приложение должно знать, из какого макета (View) ему нужно выбрать текст редактирования с идентификатором edit_username .... поэтому метод findViewById должен вызываться в созданном вами представлении, а невид текущей деятельности ... надеюсь, это поможет

EditText oUsername = (EditText) layout.findViewById(R.id.edit_username);
            String strUsername = oUsername.getText().toString(); // This is line where exception is calling
...
0 голосов
/ 16 июня 2011

Если этот код находится в Activity, то findViewById(...), вероятно, не будет работать так, как вы ожидаете.У вас есть EditText представление в макете вашей деятельности?

Вместо этого попробуйте это:

EditText oUsername = (EditText) layout.findViewById(R.id.edit_username);
String strUsername = oUsername.getText().toString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...