Не удается разрешить метод makeText () - PullRequest
0 голосов
/ 21 ноября 2018

У меня возникла проблема при попытке сделать тост в моем классе DatabaseHelper в моем проекте Android в разделе try / catch.Я пробовал следующие способы:

Toast.makeText(this, "", Toast.LENGTH_SHORT).show();

Toast.makeText(DatabaseHelper.this, "", Toast.LENGTH_SHORT).show();

Toast.makeText(DatabaseHelper.this.getApplicationContext(), "", Toast.LENGTH_SHORT).show();

И ни один из них не работает.

Вот код, где я пытаюсь сделать тост

    public void criaConta(String nome, String password){
    SQLiteDatabase db = this.getWritableDatabase();
    try {
        db.execSQL("INSERT INTO " + TABLE_NAME + " (" + COL2 + "," + COL3 + "," + COL4 + "," + COL5 + ") VALUES ('" + nome + "','" + password + "',0,0);");
    }catch(Exception e){
        Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
        Log.i("ErroCriarConta", "criaConta: "+e);
    }
    //Toast.makeText(DatabaseHelper.this,"Conta Criada",Toast.LENGTH_LONG).show();
}

СпасибоЗаранее для тех, кто готов помочь.

1 Ответ

0 голосов
/ 21 ноября 2018

Как отметил пользователь Майк в своем комментарии, вы не должны смешивать вещи, связанные с пользовательским интерфейсом, с вашим управлением данными.Вместо этого я предлагаю вам взглянуть на шаблон проектирования 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-контексте, но по опыту я могу сказать, что абстрагирование ваших данных действительно того стоит,особенно для предотвращения или исправления ошибок, подобных вашей, но и для того, чтобы значительно упростить изменение вашего приложения на более позднем этапе.

...