2014-07-24 108 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 –