2014-07-24 67 views
4

我一直在尝试添加一个标签视图到按钮上的Stacklayout在Android中单击。 但它会抛出空指针异常。以下是我想要达到的目标。任何人都可以请有关如何在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

您的代码按原样工作......只需一个小小的更改 - 制作parent一个类字段,因此它是从OnButtonClicked

中引用的请确保更新解决方案包,以便拥有最新的Xamarin.Forms。总是更新的解决方案级别的包,这样做没有得到版本冲突

这个版本进行了测试,适用于iOS:

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引用未设置为object_error –