某Controller中有TextField一文本域,但是怎么调用setText都无法赋值。
调用修改
FXMLLoader loader2 = new FXMLLoader();
loader2.setLocation(MainApp.class.getResource("view/balabala.fxml"));
anchorPane = (AnchorPane) loader2.load();
loader2.getController().setDevice();
修改值
public void setDevice() {
id.setText("111");
}
以为是值绑定问题、监听问题、多scene切换问题等等。 怎么也没想到是controller多次实例化问题。因为通过loader会实例化Controller,我在初始化时使用了loader,在修改值时有一次调用了loader,因为已经不是最初的controller了。
解决方案:写了一个缓存class,在controller初始化时存入缓存,之后调用通过该class调用方法。