Итак, у меня есть приложение Android с двумя классами, A и B. Лог c для обратной команды настроен в классе A и работает, как ожидалось: действие кнопки показывает форму B, а Кнопка Escape возвращает форму A.
Теперь, после загрузки формы в класс B, мне нужно «перезагрузить» ее. Я делаю это, создавая новую форму, снова вызывая весь класс с помощью кнопки.
В процессе команда возврата перестает работать (и кнопка команды появляется на панели инструментов), поскольку все компоненты (панель инструментов, форма и т. Д. c.) Созданы заново и отсутствуют. определения из класса A.
Мой вопрос: можно ли определить logi c обратной команды внутри класса B, а не в классе A, чтобы обратная команда все еще работала после перезагрузки класса B или как-то определить ссылки на класс А, чтобы он работал?
Ниже приведен код, который у меня уже есть. Большое спасибо за любые добрые предложения.
public class ClassA {
private Command back;
private ClassB classB;
private Form current;
private Resources theme;
private Form formA;
private Button button = new Button("Go forward");
public void loadA() {
showBack();
formA = new Form("Old Form", BoxLayout.y());
classB = new ClassB();
button.addActionListener(l -> {
classB = new ClassB();
classB.formB.getToolbar().setBackCommand(back);
classB.formB.setBackCommand(back);
classB.goBack();
Button buttonToolbar = classB.formB.getToolbar().findCommandComponent(back);
FontImage image = FontImage.createMaterial(FontImage.MATERIAL_10K, "test", 4);
buttonToolbar.setIcon(image);
});
formA.add(button);
formA.show();
}
public void showBack() {
back = new Command("Back") {
@Override
public void actionPerformed(ActionEvent evt) {
formA.showBack();
}
};
}
}
public class ClassB {
public ClassA classA = new ClassA();
public Form formB = new Form("New Form", BoxLayout.y());
private Button buttonReload = new Button("Reload");
public void reload () {
buttonReload.addActionListener(l -> {
ClassB classB = new ClassB();
classB.reload();
// I want to recreate the back-command logic here in Class B.
// The below doesn't work.
formB.getToolbar().setBackCommand(new Command("back"));
});
formB.add(buttonReload);
formB.show();
}
}