2016-01-03 8 views
0

Я получаю сообщение об ошибке как исключение Null указателя и не могу создать экземпляр активности, когда создаю тост в конструкторе действий. Я хочу знать, почему тосты работают в методе onCreate, но не в конструктор активностине удалось сделать тост в конструкторе действий

+0

«Я получаю сообщение об ошибке как исключение Null указателя и не могу создать экземпляр активности при создании тоста в конструкторе действий» - это потому, что у вас не должно быть конструктора действий. – CommonsWare

ответ

1

ОС несет ответственность за создание классов Activity. Это связано с тем, что ему необходимо выполнить некоторую настройку, включая предоставление Activity надлежащей базы Context. Без этого вы не можете сделать Toast s.

В общем, вы должны избегать делать что-либо в конструкторе с Activity (и вы должны определенно не делать их экземпляры самостоятельно, используя new).

+0

- это контекст активности, сконструированный в конструкторе действий. – deshmanth

+0

@deshmanth Нет. В общем, лучше вообще не иметь конструктора и отложить любую установку до 'onCreate()', чтобы избежать путаницы. – Karakuri

0

Обычно Toast появляется как обратная связь с пользовательским вводом (например, нажатие кнопки) или когда какое-либо внешнее событие зарегистрировано (например, имеется сетевая ошибка или новые входящие данные).

Однако мне кажется, что вы хотите показать тост сразу после открытия вашей деятельности, это правильно? Затем вы должны поместить его в метод onCreate вашей деятельности. Пример Toast сделан как этот

Toast.makeText(MainActivity.this, "Hello World", Toast.LENGTH_LONG).show(); 

Вы могли бы также рассмотреть вопрос о создании этого вызова в методе onResume. Я рекомендую ознакомиться с activity lifecycles.

Вместо того, чтобы использовать тосты, вы также можете зарегистрироваться Snackbars.

+0

Я просто хотел проверить, что произойдет, если мы будем использовать конструктор действий и почему это не важно – deshmanth

 Смежные вопросы

  • Нет связанных вопросов^_^