我试图使用这个渲染器:
using System;
using Android.Content;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(AutoComplete), typeof(xmr_cross_test.Custom_controls.AutoCompleteRenderer))]
namespace xmr_cross_test.Custom_controls
{
public class AutoCompleteRenderer : ViewRenderer<AutoComplete, AutoCompleteTextView>
{
public AutoCompleteRenderer()
{
}
protected override void OnElementChanged(ElementChangedEventArgs<AutoComplete> e)
{
base.OnElementChanged(e);
AutoComplete autocompletview = (AutoComplete)this.Element;
var inflatorservice = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);
var containerView = inflatorservice.Inflate(Resource.Layout.autocomplete_entry, null, false);
var autoCompleteTextView = containerView.FindViewById<AutoCompleteTextView>(Resource.Id.autocomplete_textview);
var autoCompleteOptions = new String[] { "Hello", "Hey", "Bonjour" };
var adapter = new ArrayAdapter<String>(Context, Resource.Layout.list_item, autoCompleteOptions);
autoCompleteTextView.Hint = "e.g. Hey";
autoCompleteTextView.Adapter = adapter;
autoCompleteTextView.TextChanged += (sender, args) =>
{
autocompletview.AutoCompleteText = autoCompleteTextView.Text;
};
if (e.OldElement == null)
{
// perform initial setup
base.SetNativeControl(autoCompleteTextView); //exception here
}
}
}
}
但是在绑定时遇到了异常::
Java.Lang.IllegalStateException:指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()。
在这种情况下是什么child
以及如何解决它?
PS:AutoComplete
如果需要,可以在代码资源和类中添加引用。