Java 无法解析方法makeText()
当我试图在try/catch下为我的android项目上的DatabaseHelper类干杯时,我遇到了一个问题。 我尝试了以下方法:Java 无法解析方法makeText(),java,android,android-studio,android-toast,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.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();
}
提前感谢所有愿意提供帮助的人。正如用户Mike M在评论中提到的,您不应该将用户界面相关的内容与数据管理混为一谈。 相反,我建议您看看ViewModel设计模式。使用ViewModel类可以执行以下操作:
try
{
myViewModel.insert();
}
catch (Exception e)
{
Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
Log.i("ErroCriarConta", "criaConta: " + e);
}
在你的活动中。这使活动能够捕获您以前在insert()方法的ViewModel类中抛出的错误
不过,我会更进一步,使用repository设计模式,它只是在数据和UI之间添加了另一个抽象层。这将允许您将数据库操作包装到存储库中,然后在ViewModel中调用这些包装方法从数据库中读取/写入数据,而您的活动可以从ViewModel访问UI所需的数据
现在我知道这听起来是你要做的很多工作,只是让你的吐司显示在正确的UI环境中,但从经验来看,我可以说,提取你的数据确实是值得的,特别是对于防止或修复像你这样的错误,而且还可以使以后修改你的应用程序变得更容易。“没有一个是有效的”-您得到的确切错误是什么?如果
DatabaseHelper
是SqliteOpenHelper
,则它不是上下文,这是第一个参数所需要的。将上下文
传递到构造函数中,可以为其保留一个字段,但实际上不应该从数据库助手类中执行UI操作。这应该在您的活动中。这与所有错误都是一样的。您不必在活动中捕获任何内容。修改criaConta()
方法以返回成功/失败值,即使只是一个简单的布尔值。但愿我早一点想到这件事。再次感谢你的帮助
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); ");
}
}