Я пытаюсь создать пользовательские вкладки, используя this. Но когда я пытаюсь создать экземпляр TextView из надутого макета и использовать его как вид в моем TabHost.TabSpec, я получаюПользовательские вкладки «Указанный ребенок уже имеет родителя»
«Необработанное исключение:
java.lang.IllegalStateException: Заданный ребенок уже имеет родителя. Сначала вы должны вызвать removeView() для родителя ребенка. "
Main.cs
public class Main : TabActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Intent[] intents = new Intent[3];
intents[0] = new Intent(this, typeof(Inspection)).PutExtra("Name", "Inspection");
intents[1] = new Intent(this, typeof(Transfer)).PutExtra("Name", "Transfer");
intents[2] = new Intent(this, typeof(ServiceCalls)).PutExtra("Name", "Service Calls");
foreach (var intent in intents)
{
intent.AddFlags(ActivityFlags.NewTask);
TextView tv = getView(intent.GetStringExtra("Name"));
TabHost.TabSpec spec = TabHost.NewTabSpec(intent.GetStringExtra("Name")).SetIndicator(tv).SetContent(intent);
TabHost.AddTab(spec);
}
TabHost.CurrentTab = 0;
}
private TextView getView(string text)
{
View v = LayoutInflater.Inflate(Resource.Layout.tabs_bg, (ViewGroup)FindViewById(Android.Resource.Id.Content));
TextView tv = (TextView)v.FindViewById(Resource.Id.tabsText);
tv.Text = text;
return tv;
}
}
tabs_bg.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabsLayout" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/tabsText" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background ="@drawable/tab_selector"
android:textSize="18dip"/>
</LinearLayout>
Если я заменяю
TextView tv = (TextView)v.FindViewById(Resource.Id.tabsText);
в GetView с
TextView tv = new TextView(this);
Тогда я не получаю эту ошибку. Таким образом, это определенно имеет какое-то отношение к tabsText в tabs_bg, хотя это точно так, как это сделал автор в этом примере.
Вот и все. Благодаря! – jmease