0

別のクラスから別の calss の initialize メソッドにアクセスしようとしていますが、ctroller を返すときに nullpointer Exception が発生しています

これは、2 番目の呼び出しから呼び出しようとしているコードです。

    Line1-        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/src/myjavfxapp/controller/EditClientDetails.fxml"));
    Line 2-        EditClientDetailsController fooController = (EditClientDetailsController) fxmlLoader.getController();
      Line3-       fooController.initialize(null, null);

行番号 3 でヌル ポインター例外が発生しています。

Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1435)
    ... 44 more
Caused by: java.lang.NullPointerException
    at myjavfxapp.controller.NewUserController.saveNewuser(NewUserController.java:167)
    ... 54 more

私の意図は、異なるコントローラ クラスから「EditClientDetails.fxml」フィールドを初期化することです。

私が何かを逃した場合は指摘してください。

4

1 に答える 1

1

以下の例を試してみてください。FxmlLoader クラスの load() 関数を使用する必要があります。

public class Xxx extends Application {

  @Override
  public void start(Stage stage) throws Exception {

    //Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));     
    FXMLLoader loader = new FXMLLoader(getClass().getResource("Sample.fxml"));
    Parent root = (Parent)loader.load();          
    Scene scene = new Scene(root);        
    stage.setScene(scene);
    stage.show();

    SampleController controller = (SampleController)loader.getController();

  }

  public static void main(String[] args) {
    launch(args);
  }
}
于 2013-11-08T12:53:52.967 に答える