Как вызвать метод из другого класса? - PullRequest
1 голос
/ 27 ноября 2011

У меня есть 2 класса, Main и DialogOne (класс владельца для диалогового интерфейса).В 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()

1 Ответ

0 голосов
/ 27 ноября 2011

Чтобы это работало, JVM должна была бы помнить контекст, в котором был создан интерфейс, чтобы ссылка на main никогда не стиралась. Java не поддерживает это, за исключением случаев, когда поля являются окончательными. Взгляните на часть "1001 * this

" Анонимный внутренний класс, а не замыкание "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...