无法解析方法makeText()

时间:2018-11-21 18:46:30

标签: java android android-studio android-toast

尝试在try / catch下的android项目上的DatabaseHelper类上举杯时遇到问题。 我尝试了以下方法:

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 :(得分:1)

正如用户Mike M.在其评论中提到的那样,您不应将与用户界面相关的内容与数据管理混在一起。 相反,我建议您看一下ViewModel设计模式。使用ViewModel类,您可以执行以下操作:

try
{
    myViewModel.insert();
}
catch (Exception e)
{
    Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
    Log.i("ErroCriarConta", "criaConta: " + e);
}

在您的活动中。这样,活动就可以捕获您先前在insert()方法中的ViewModel类中引发的错误。

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); ");
    }
}

但是,我将走得更远,并使用存储库设计模式,该模式只是在您的数据和UI之间添加了另一个抽象层。这将使您可以将数据库操作包装到存储库中,然后在ViewModel中调用那些包装方法,以从数据库中读取数据/向数据库写入数据,而您的活动可以从ViewModel中访问UI所需的数据。

现在,我知道要做很多工作,只是要在正确的UI上下文中显示Toast,但是根据经验,我可以说抽象数据确实是值得的,尤其是对于防止或修复像您这样的错误,也使以后修改应用程序变得更加容易。