I've seen bunch of posts connected with my problem but it seems like nothing works for me. I'm writing simple window app in Java FX and FXML. I have a Main class which has field with days names. I've got also two controller classes - Controller (which is like more important controller) and ShowDays. Each controller has their own FXML and they are responsible for switching scenes and working with user (and with Model = Main). In Controller class user can add a new day to our days names or remove last day. In ShowDays class user can print on window names of days. It's all connected with clicking buttons.
I know that I can organize my program easier and I can print names of days in Controller class and remove all ShowDays class but it's only a part of project I want to create and I just want to understand how real programmers would have done this kind of things.
This is my code:
public class Main extends Application {
private ArrayList<String> daysNames;
public Main() {
    daysNames = new ArrayList<>();
}
public void addDay() {
    String[] days = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    System.out.println("I'm adding day!" + daysNames.size());
    if (getDaysNames().size() < 7)
        getDaysNames().add(days[getDaysNames().size()]);
    else
        System.out.println("Can't add more days!");
}
public void removeDay() {
    if (!getDaysNames().isEmpty())
        getDaysNames().remove(getDaysNames().get(getDaysNames().size()-1));
}
@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 300, 275));
    primaryStage.show();
}
//setters,getters...
}
Controller class:
public class Controller implements Initializable {
private Main myMain;
@FXML
private ShowDays showDays;
public Controller() {
    myMain=new Main();
    showDays = new ShowDays(myMain);
}
public Controller(Main main) {
    this.myMain = main;
    showDays = new ShowDays(myMain);
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
}
public void addDay() {
    myMain.addDay();
}
public void removeDay() {
    myMain.removeDay();
}
public void GOTOshowDays(ActionEvent event) throws IOException {
    Parent showDaysParent = FXMLLoader.load(getClass().getResource("ShowDays.fxml"));
    Scene showDaysScene = new Scene(showDaysParent);
    Stage window = (Stage) ((Node)event.getSource()).getScene().getWindow();
    window.setScene(showDaysScene);
    window.show();
}
}
ShowDays class:
public class ShowDays implements Initializable {
@FXML
private Text text;
private Main myMain;
public ShowDays() {
    myMain = new Main();
}
public ShowDays(Main main) {
    myMain = main;
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
}
public void BackToController(ActionEvent event) throws IOException {
    Parent controllerParent = FXMLLoader.load(getClass().getResource("sample.fxml"));
    Scene controllerScene = new Scene(controllerParent);
    Stage window = (Stage) ((Node)event.getSource()).getScene().getWindow();
    window.setScene(controllerScene);
    window.show();
}
public void showDaysInWindow(ActionEvent event) throws IOException {
    String allText = "";
    for (String day : myMain.getDaysNames())
        allText += day + " ";
    text.setText(allText);
}
}  
and the FXML files: sample.fxml
<HBox prefHeight="100.0" prefWidth="483.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
    <children>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
     <children>
        <Button layoutX="-8.0" layoutY="48.0" mnemonicParsing="false" onAction="#GOTOshowDays" text="GOTO show days" />
     </children>
  </AnchorPane>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
  <Button mnemonicParsing="false" onAction="#addDay" text="add day" />
  <Button mnemonicParsing="false" onAction="#removeDay" text="remove day" />
ShowDays.fxml
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.ShowDays">
   <center>
      <Text fx:id="text" strokeType="OUTSIDE" strokeWidth="0.0" BorderPane.alignment="CENTER" />
   </center>
   <top>
      <Button mnemonicParsing="false" onAction="#showDaysInWindow" text="Show days" BorderPane.alignment="CENTER" />
   </top>
   <bottom>
      <Button mnemonicParsing="false" onAction="#BackToController" text="Go back" BorderPane.alignment="CENTER" />
   </bottom>
</BorderPane>
I'm not sure if ShowDays user actions works as expected (it's all about that...) but Controller do. The problem is when I add a few days in Controller scene and then switch scene to ShowDays scene, it seems like I lose my Main instance... When I have one controller class, my code cope with working all time on the same instance of Main and adding/removing days works as expected but I can't cope with connecting multiple controllers to model and them each other... I've spend so much time trying to fix this and I don't really understand all of the tips which I found on the internet, so I ask you.
