О вопросах в вашем комментарии:
1
это очень хороший совет, но одна нота в том, что когда
SetContentView (localLayout); используется внутри деятельности, которая уже
имеет представление содержимого, приложение вылетает.
Приложение упало, потому что localLayout в SetContentView (localLayout) является LinearLayout, но TabWidget требует TabHost. Таким образом, вы можете напрямую использовать:
SetContentView(Resource.Layout.Main);
где Main.xaml похож на:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:theme="@style/MyTheme">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.0"
android:visibility="visible" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>
2
LinearLayout localLayout =
FindViewById (Resource.Layout.Main); Посмотреть
whichYouWantToUse_findViewById =
LayoutInflater.Inflate (Resource.Layout.Main, null); TextView TV =
FindViewById (Resource.Id.textView169); TabHost _tabHost =
(TabHost) whichYouWantToUse_findViewById.FindViewById (Resource.Id.tabhost);
'до сих пор не вижу табхоста ... я схожу с ума здесь
Причина, по которой вы не видите tabhost, во-первых, TabHost - это FrameLayout, а не LinearLayout, во-вторых, Resource.Id.tabhost должен быть Android.Resource.Id.TabHost. Поэтому я отредактировал ваш код так:
FrameLayout localLayout = FindViewById<FrameLayout>(Resource.Layout.Main);
whichYouWantToUse_findViewById = LayoutInflater.Inflate(Resource.Layout.Main, null);
//TextView tv = FindViewById<TextView>(Resource.Id.textView1);
TabHost _tabHost = (TabHost)whichYouWantToUse_findViewById.FindViewById(Android.Resource.Id.TabHost);
3
Так что интересно, если я поменяю tabhost на tahost ala
android: id = "@ + id / tahost" ресурс появляется в конструкторе, но когда
Я меняю на андроид: id = "@ + id / tabhost" ресурс исчезает .. очень
странно ..
Идентификатор TabHost всегда должен быть @android: id / tabhost ", его нельзя изменить на tahost или любой другой.
Итак, код в методе onCreat выглядит следующим образом:
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
View whichYouWantToUse_findViewById = LayoutInflater.Inflate(Resource.Layout.layout1, null);
TextView textInAnotherLayout = (TextView)whichYouWantToUse_findViewById.FindViewById(Resource.Id.textView1);
textInAnotherLayout.Text = "Yeah";
TabHost tabHost = FindViewById<TabHost>(Android.Resource.Id.TabHost);
TabWidget tabWidget = tabHost.TabWidget;
var tabContent = tabHost.TabContentView;
FrameLayout localLayout = FindViewById<FrameLayout>(Resource.Layout.Main);
whichYouWantToUse_findViewById = LayoutInflater.Inflate(Resource.Layout.Main, null);
TabHost _tabHost = (TabHost)whichYouWantToUse_findViewById.FindViewById(Android.Resource.Id.TabHost);
Вот старый ответ.
Ответ изменен: способ получить TabHost и TabWidget в Activity:
TabHost tabHost = this.TabHost;
TabWidget tabWidget = tabHost.TabWidget;
Способ использования одного ресурса из одного файла XAML в упражнении для
другой:
LinearLayout localLayout = FindViewById<LinearLayout>(Resource.Layout.Main);
SetContentView(localLayout);
View whichYouWantToUse_findViewById = LayoutInflater.Inflate(Resource.Layout.layout1, null);
Button button1 = (Button)whichYouWantToUse_findViewById.FindViewById(Resource.Id.button1);
Я загружаю ваш проект и исправляю эту проблему, изменяя свойство> android: id