我有2个类,Main
和DialogOne
(对话框ui的所有者类)。在Main
中,我调用new DialogOne().center();
这会打开对话框。在DialogOne
中,我有一个按钮的点击处理程序。单击该按钮时,我将记录插入数据库。
Main main = new Main(); //because the db.open is in Main
@UiHandler("addBookButton")
void onAddBookButtonClick(ClickEvent event) {
main.db.transaction(new TransactionCallback() {
public void onTransactionStart(SQLTransaction tx) {
tx.executeSql("INSERT INTO products (bookName) VALUES (?)", new Object[] { bookNameTextBox.getText().toString() });
}
public void onTransactionFailure(SQLError error) {
}
public void onTransactionSuccess() {
}
});
this.hide();
}
在onTransactionSuccess()
中,我需要调用updateList()
中的Main
,以便清除列表并从数据库中重新填充。我该怎么做呢?我试过main.updateList()
,但似乎没有用。我可以在Main
中执行等待onTransactionSuccess()
被点击然后updateList()
答案 0 :(得分:0)
为了使其工作,JVM必须记住创建接口的上下文,以便不会删除对main的引用。 Java不支持,除非字段是最终的。看看this
中的“Anonymous inner class it not a closure”部分