Как отметил пользователь Майк в своем комментарии, вы не должны смешивать вещи, связанные с пользовательским интерфейсом, с вашим управлением данными.Вместо этого я предлагаю вам взглянуть на шаблон проектирования ViewModel.Используя класс ViewModel, вы делаете что-то вроде:
try
{
myViewModel.insert();
}
catch (Exception e)
{
Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
Log.i("ErroCriarConta", "criaConta: " + e);
}
в своей деятельности.Это позволяет действию отлавливать ошибку, которую вы ранее выбросили в своем классе ViewModel в методе insert ().
public class MyViewModel extends ViewModel
{
// ...
public void insert() throws Exception
{
db.execSQL(
"INSERT INTO " + TABLE_NAME +
" (" + COL2 + "," + COL3 + "," + COL4 + "," + COL5 + ")
VALUES('" + nome + "', '" + password + "', 0, 0); ");
}
}
Однако я бы пошел еще дальше и использовал бы шаблон проектирования хранилища, который просто добавляет еще одну абстракцию.слой между вашими данными и вашим пользовательским интерфейсом.Это позволит вам обернуть ваши операции с базой данных репозиторием, а затем вызвать эти методы-оболочки в вашей ViewModel для чтения / записи данных из / в вашу базу данных, в то время как ваша деятельность может получить доступ к данным, необходимым для пользовательского интерфейса, из ViewModel.
Теперь я знаю, что это звучит как большая работа для вас, чтобы ваш Toast отображался в правильном UI-контексте, но по опыту я могу сказать, что абстрагирование ваших данных действительно того стоит,особенно для предотвращения или исправления ошибок, подобных вашей, но и для того, чтобы значительно упростить изменение вашего приложения на более позднем этапе.