Я получаю сообщение об ошибке как исключение Null указателя и не могу создать экземпляр активности, когда создаю тост в конструкторе действий. Я хочу знать, почему тосты работают в методе onCreate, но не в конструктор активностине удалось сделать тост в конструкторе действий
ответ
ОС несет ответственность за создание классов Activity
. Это связано с тем, что ему необходимо выполнить некоторую настройку, включая предоставление Activity
надлежащей базы Context
. Без этого вы не можете сделать Toast
s.
В общем, вы должны избегать делать что-либо в конструкторе с Activity
(и вы должны определенно не делать их экземпляры самостоятельно, используя new
).
Обычно Toast появляется как обратная связь с пользовательским вводом (например, нажатие кнопки) или когда какое-либо внешнее событие зарегистрировано (например, имеется сетевая ошибка или новые входящие данные).
Однако мне кажется, что вы хотите показать тост сразу после открытия вашей деятельности, это правильно? Затем вы должны поместить его в метод onCreate
вашей деятельности. Пример Toast сделан как этот
Toast.makeText(MainActivity.this, "Hello World", Toast.LENGTH_LONG).show();
Вы могли бы также рассмотреть вопрос о создании этого вызова в методе onResume
. Я рекомендую ознакомиться с activity lifecycles.
Вместо того, чтобы использовать тосты, вы также можете зарегистрироваться Snackbars.
Я просто хотел проверить, что произойдет, если мы будем использовать конструктор действий и почему это не важно – deshmanth
«Я получаю сообщение об ошибке как исключение Null указателя и не могу создать экземпляр активности при создании тоста в конструкторе действий» - это потому, что у вас не должно быть конструктора действий. – CommonsWare