Работа с Tab Control в Mono для Android - PullRequest
0 голосов
/ 03 апреля 2012

Я сослал this на SO, поскольку проблема была похожа на мою.

В своей основной деятельности я вызываю класс TabControl, который расширяет ActivityGroup.

Обратите внимание, что я не могу расширить свой основной класс с ActivityGroup, поскольку хочу использовать функцию Custom_Title, которая не будет возможна с ActivityGroup.

1).основной класс:

public class MainActivity: Activity
{
   TabControl _tabControl;
   protected override void OnCreate (Bundle bundle)
   {
         _tabControl=new TabControl();
    _tabControl.CreateTabs();
    }
}

2.) Класс TabControl:

public class TabControl:ActivityGroup
    {
        TabHost tabHost;

        protected override void OnCreate (Bundle bundle)
        {            
            base.OnCreate (bundle);
            SetContentView(Resource.Layout.TabView);
        }

    public void CreateTabs()
    {
        try
        {
             tabHost=(TabHost)FindViewById(Resource.Id.tabHost);
         LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);
             tabHost.Setup(mLocalActivityManager);
             //tabHost.Setup();             

        TabHost.TabSpec spec;
        Intent intent; 

        intent = new Intent (this, typeof (MainActivity));
        intent.AddFlags (ActivityFlags.NewTask);

                spec=tabHost.NewTabSpec("Heat Map");
                spec.SetIndicator("Heat Map");
                spec.SetContent(intent);
                tabHost.AddTab(spec);

        intent = new Intent (this, typeof (LiveMkt));
        intent.AddFlags (ActivityFlags.NewTask);

                spec=tabHost.NewTabSpec("Live Mkt");
                spec.SetIndicator("Live Mkt");
                spec.SetContent(intent);
                tabHost.AddTab(spec);

                tabHost.CurrentTab = 1;                 
            }
            catch(Exception ex)
            {}
        }       
    }

3.) TabView.xml:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/tabLayout">

<TabHost 
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/tabHost"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        <RelativeLayout
            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_alignParentBottom="true" />
            <FrameLayout
                    android:id="@android:id/tabcontent"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:padding="5dp"       
                    android:layout_alignParentTop="true"/>
        </RelativeLayout>
</TabHost>  
</RelativeLayout>

Но я получаю следующую ошибку:

 Module Name : TabControl

Method Name  : CreateTabs

Exception Details : Java.Lang.NullPointerException: Exception of type 'Java.Lang.NullPointerException' was thrown.

at Android.Runtime.JNIEnv.CallNonvirtualObjectMethod (IntPtr jobject, IntPtr jclass, IntPtr jmethod, Android.Runtime.JValue[] parms) [0x00000] in <filename unknown>:0 

at Android.App.Activity.FindViewById (Int32 id) [0x00000] in <filename unknown>:0 

at StockGadget.Controls.TabControl.CreateTabs () [0x00000] in <filename unknown>:0 

--- End of managed exception stack trace ---

java.lang.NullPointerException

at android.app.Activity.findViewById(Activity.java:1637)

Поскольку я абсолютный новичок в Mono for Android, любая помощь приветствуется ...

1 Ответ

0 голосов
/ 06 апреля 2012

В своей основной деятельности просто создайте элемент управления вкладкой и просмотрите все другие действия через него.Расширьте основную деятельность с TabActivity.

...