2015-12-16 58 views
1

我試圖創建一個簡單的android原生視圖。一旦我得到了整個事情。與渲染器一起工作 - 它將以攝像機視圖的形式實現。Xamarin形式自定義渲染器android stackoverflowerror

我的渲​​染:

[assembly: ExportRenderer(typeof(CameraPage), typeof(CameraPageRenderer))] 
namespace CameraTester2.Droid 
{ 
    public class CameraPageRenderer : PageRenderer, TextureView.ISurfaceTextureListener 
    { 
     Activity activity; 
     global::Android.Views.View view; 
     protected override void OnElementChanged(ElementChangedEventArgs<Page> e) 
     { 
      base.OnElementChanged(e); 
      activity = this.Context as Activity; 
      view =activity.LayoutInflater.Inflate(Resource.Layout.TestLayout, this, true); 
      AddView(view); 
     } 

但是..當我添加的看法 - 我得到一個計算器execption,我只是無法弄清楚,爲什麼什麼即時通訊做是錯誤的。

我已經試過以下這些例子: https://blog.xamarin.com/customize-your-xamarin-forms-app-with-pages-for-each-platform/

http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/contentpage/

頁的Android是一個標籤一個簡單的頁面 - 不認爲你需要看到它。 共享PCL項目中的頁面只是一個空的Xamarin.Forms Xaml頁面。

有什麼建議嗎?

另外我想知道如何創建自己的活動 - 並將其設置爲上下文。如果我嘗試設置像這樣的上下文:

protected override void OnElementChanged(ElementChangedEventArgs<Page> e) 
    { 
     base.OnElementChanged(e); 
     activity = this.Context as CameraActivity; 
     view =activity.LayoutInflater.Inflate(Resource.Layout.TestLayout, this, true); 
     AddView(view); 
    } 

活動被設置爲空。在此先感謝您的任何建議。

+0

堆棧跟蹤在哪裏?沒有它,很難猜測它是什麼溢出。下面是一個Xamarin傳教士的項目,它有一個相機頁面渲染器:https://github.com/pierceboggan/Moments –

回答

0

這是非常舊的帖子,但答案似乎很簡單。代碼缺少警衛檢查,它應該看起來像這樣:

protected override void OnElementChanged(ElementChangedEventArgs<Page> e) 
{ 
    base.OnElementChanged(e); 

    if (e.OldElement != null || Element == null) 
    { 
     return; 
    } 
    ... 
}