title: SAPUI5 custom control getAggregation() is null
body: <p>I have written a custom control in sapui5. Its a virtual keyboard (onscreen keyboard) having a MatrixLayout and a lot of buttons as aggregations. I added a "public" function to the control which should allow me to disable some of the buttons. But when I am trying to access it within this function all my aggregations except my MatrixLayout-Aggregation is null.</p>
  
  <p>Can somebody help me out how I can access my aggregations (buttons)?
  I have tried it with visibility hidden and public. I do see the generated accessors then, but those return "null" too.
  If I try to get the aggregation "_layout" my MatrixLayout is returned.</p>
  
  <p>I am trying to access it this way:</p>
  
  <pre><code>    onVirtualKeyboardClickBase : function(oEvent, oController){
  
      var virtualKeyboard = oEvent.getSource().disableButton("_btnMinus");
      }
  </code></pre>
  
  <p>This is the code of the custom control:</p>
  
  <pre><code>   (function () {
      "use strict";
  
      jQuery.sap.declare("de.vw.timerec.controls.VirtualKeyboard");
  
      $.sap.includeStyleSheet("css/VirtualKeyboard.css");
  
      jQuery.sap.require("sap.ui.commons.Button");
  
      sap.ui.core.Control.extend("de.vw.timerec.controls.VirtualKeyboard", {
  
          // the control API:
          metadata : {
              properties : {
                  /* Business Object properties */
                  "title"           : {type : "string"},
                  "width"           : {type: "sap.ui.core.CSSSize", defaultValue: "253px" },
                  "buttonWidth"     : {type: "sap.ui.core.CSSSize", defaultValue: "57px" },
                  "buttonHeight"    : {type: "sap.ui.core.CSSSize", defaultValue: "57px" }
              },
  
              aggregations : {
                  "_layout"    : {type : "sap.ui.commons.layout.MatrixLayout", multiple : false, visibility: "hidden"},
                  "_btn1"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn2"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn3"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btnDel"    : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn4"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn5"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn6"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btnAlpha"  : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn7"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn8"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn9"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btnBack"   : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btn0"      : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btnComma"  : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"},
                  "_btnMinus"  : {type : "sap.ui.commons.Button", multiple : false, visibility: "public"},
                  "_btnNext"   : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"}
              },
  
              associations: { },
  
              events : { 
                  click : {enablePreventDefault : true}
              }
          },
  
  
          init : function() {
  
              var oControl = this;
              var oMatrixLayout;
              var oBtn1, oBtn2, oBtn3, oBtnDel, oBtn4, oBtn5, oBtn6, oBtnAlpha, 
              oBtn7, oBtn8, oBtn9, oBtnBack, oBtn0, oBtnComma, oBtnMinus, oBtnNext;
  
              oMatrixLayout = new sap.ui.commons.layout.MatrixLayout({
                  id : this.getId() + "-matrixLayout",
                  layoutFixed : true, 
                  columns : 4,
                  width : "100%"
              });
              this.setAggregation("_layout", oMatrixLayout);
  
              oBtn1 = this._createButton("1", "1", oControl, true);
              this.setAggregation("_btn1", oBtn1);
  
              oBtn2 = this._createButton("2", "2", oControl, true);
              this.setAggregation("_btn2", oBtn2);
  
              oBtn3 = this._createButton("3", "3", oControl, true);
              this.setAggregation("_btn3", oBtn3);
  
              oBtnDel = this._createButton("", "delete", oControl, false);
              oBtnDel.setIcon("sap-icon://undo");
              this.setAggregation("_btnDel", oBtnDel);
              oMatrixLayout.createRow(oBtn1, oBtn2, oBtn3, oBtnDel);
  
              oBtn4 = this._createButton("4", "4", oControl, true);
              this.setAggregation("_btn4", oBtn4);
  
              oBtn5 = this._createButton("5", "5", oControl, true);
              this.setAggregation("_btn5", oBtn5);
  
              oBtn6 = this._createButton("6", "6", oControl, true);
              this.setAggregation("_btn6", oBtn6);
  
              oBtnAlpha = this._createButton("Alpha", "alpha", oControl, false);
              this.setAggregation("_btnAlpha", oBtnAlpha);
              oMatrixLayout.createRow(oBtn4, oBtn5, oBtn6, oBtnAlpha);
  
              oBtn7 = this._createButton("7", "7", oControl, true);
              this.setAggregation("_btn7", oBtn7);
  
              oBtn8 = this._createButton("8", "8", oControl, true);
              this.setAggregation("_btn8", oBtn8);
  
              oBtn9 = this._createButton("9", "9", oControl, true);
              this.setAggregation("_btn9", oBtn9);
  
              oBtnBack = this._createButton("", "back", oControl, false);
              oBtnBack.setIcon("sap-icon://arrow-top");
              this.setAggregation("_btnBack", oBtnBack);
              oMatrixLayout.createRow(oBtn7, oBtn8, oBtn9, oBtnBack);
  
              oBtn0 = this._createButton("0", "0", oControl, true);
              this.setAggregation("_btn0", oBtn0);
  
              oBtnComma = this._createButton(",", ",", oControl, true);
              this.setAggregation("_btnComma", oBtnComma);
  
              oBtnMinus = this._createButton("-", "-", oControl, true);
              this.setAggregation("_btnMinus", oBtnMinus);
  
              oBtnNext = this._createButton("", "next", oControl, false);
              oBtnNext.setIcon("sap-icon://arrow-bottom");
              this.setAggregation("_btnNext", oBtnNext);
              oMatrixLayout.createRow(oBtn0, oBtnComma, oBtnMinus, oBtnNext);
          },
  
          onAfterRendering: function () {
  
          },
  
          _createButton : function (text, buttonValue, oControl, isDigitButton) { 
  
              var styleClassName = "virtualKeyboardButtonDigit";
              if (!isDigitButton) styleClassName = "virtualKeyboardButtonSpecial";
  
              var buttonIdHelper = buttonValue;
              if (buttonValue == ",") {
                  buttonIdHelper = "comma";
              }
  
              if (buttonValue == "-") {
                  buttonIdHelper = "minus";
              }
  
              var buttonId = this.getId() + "virtualKeyboardButton_" + buttonIdHelper;
              var oBtn   = new sap.ui.commons.Button({
                  id: buttonId,
                  text: text,
                  width: this.getProperty("buttonWidth"),
                  height: this.getProperty("buttonHeight"),
                  press: function (oEvent) {
                      oControl.fireClick({
                          buttonValue : buttonValue
                      });
                  }
              }).addStyleClass("virtualKeyboardButton " + styleClassName);
              return oBtn;
          },
  
          disableButton : function (buttonName) 
          { 
              // this.getAggregation(&lt;any button aggregation&gt;) returns "null"
              // this.getAggregation("_layout") returns the MatrixLayout-Aggregation
              this.getAggregation(buttonName).setEnabled(false);
          },
  
          renderer : {
  
              render : function(oRm, oControl) {                  
  
                  oRm.write("&lt;div");
                  oRm.writeControlData(oControl);
                  oRm.addStyle("width", oControl.getWidth());
                  oRm.addStyle("margin-left", "44px");
                  oRm.writeStyles();
                  oRm.write("&gt;");
  
                  oRm.renderControl(oControl.getAggregation("_layout"));
  
                  oRm.write("&lt;/div&gt;");
              }
          }
      });
  
  
      de.vw.timerec.controls.VirtualKeyboard.prototype.exit = function () {
  
      };
  
  }());
  </code></pre>