2014-07-24 18 views
4

Я пытаюсь добавить представление Label к Stacklayout на кнопке Click в Android. Но он выбрасывает исключение Null Pointer. Ниже я пытаюсь добиться успеха. Может кто-нибудь, пожалуйста, советы о том, как добиться этого в xamarin.formsДобавить ребенка в родителя на кнопке Нажмите Xamarin.forms

Xamarin.Forms код в C#

StackLayout parent= new StackLayout(); 

Button add= new Button 
     { 
      HorizontalOptions=LayoutOptions.End, 
      BackgroundColor=Xamarin.Forms.Color.White, 
      Text="ADD", 
      TextColor=Xamarin.Forms.Color.Maroon, 
     }; 

add.Clicked += OnButtonClicked; 

Label firstLabel = new Label 
     { 
      Text = "Label 1", 
      HorizontalOptions = LayoutOptions.StartAndExpand, 
      TextColor=Xamarin.Forms.Color.FromHex("#000000") 
     }; 
parent.Children.Add(add); 
parent.Children.Add(firstLabel); 

Добавление ярлыка в ButtonClick

void OnButtonClicked(object sender, EventArgs e) 
{ 

    Label secondLabel = new Label 
     { 
      Text = "Label 1", 
      HorizontalOptions = LayoutOptions.StartAndExpand, 
      TextColor=Xamarin.Forms.Color.FromHex("#000000") 
     }; 
    parent.Children.Add(secondLabel); 
} 

Спасибо заранее

+0

Я не вижу причин для этого, чтобы потерпеть неудачу. Не могли бы вы отредактировать сообщение с трассировкой стека? –

ответ

6

Ваш код работает как есть ... с одним крошечным изменением - make parent поле класса, на которое оно ссылается в пределах OnButtonClicked

Убедитесь, что вы обновили пакеты решений, чтобы у вас были последние версии Xamarin.Forms. Всегда обновлять пакеты на уровне решения так что не получают управления версиями конфликтов

Эта версия была протестирована и работает на прошивкой:

public class LabelPage: ContentPage 
    { 
     StackLayout parent = null; 

     public LabelPage() 
     { 
      parent = new StackLayout(); 

      Button add = new Button { 
       HorizontalOptions = LayoutOptions.End, 
       BackgroundColor = Xamarin.Forms.Color.White, 
       Text = "ADD", 
       TextColor = Xamarin.Forms.Color.Maroon, 
      }; 

      add.Clicked += OnButtonClicked; 

      Label firstLabel = new Label { 
       Text = "Label 1", 
       HorizontalOptions = LayoutOptions.StartAndExpand, 
       TextColor = Xamarin.Forms.Color.FromHex ("#000000") 
      }; 
      parent.Children.Add (add); 
      parent.Children.Add (firstLabel); 

      Content = parent; 
     } 

     void OnButtonClicked (object sender, EventArgs e) 
     { 
      Label secondLabel = new Label { 
       Text = "Label 1", 
       HorizontalOptions = LayoutOptions.StartAndExpand, 
       TextColor = Xamarin.Forms.Color.FromHex ("#000000") 
      }; 
      parent.Children.Add (secondLabel); 
      //UpdateChildrenLayout(); 
     } 
    } 
+0

Я пытаюсь в Android .. Я пробовал, как вы предложили, но не повезло .. –

+0

Какая ошибка вы получаете? –

+0

В ** parent.Children.Add (secondLabel); ** ссылка _объекта не установлена ​​на ошибку object_ –