c#非静态字段,方法或属性需要对象引用Android.Widget.TabHost.NewTabSpec(string)

时间:2014-11-27 17:04:48

标签: c# android xamarin

我正在尝试创建一个应该包含一些导航标签的应用,然后我按照演练,添加了我自己的详细信息,但在最后一步中我遇到了两次错误。

我使用的演练是:http://developer.xamarin.com/guides/android/user_interface/tab_layout/Walkthrough_Creating_a_tabbed_ui/

我没有使用演练项目,但是开始了我自己的项目。

错误出现在第31和36行。

另外,我非常喜欢这个。

using System;

using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace AppTest1
{
    [Activity (Label = "Pathfinder Combat Companion", MainLauncher = true, Icon =    "@drawable/icon")]
public class MainActivity : Activity
{

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

        CreateTab(typeof(Combat_Statistics), "combat_stats", "Combat Statistics", Resource.Drawable.ic_tab_whats_on);
        CreateTab(typeof(ConditionsBuffs), "condi_buffs", "Consitions/Buffs", Resource.Drawable.ic_tab_speakers);
        CreateTab(typeof(Skills), "skills", "Skills", Resource.Drawable.ic_tab_sessions);
        CreateTab(typeof(Spellbook), "spellbook", "Spellbook", Resource.Drawable.ic_tab_my_schedule);
    }
    private void CreateTab(Type activityType, string tag, string label, int drawableId )
    {
        var intent = new Intent(this, activityType);
        intent.AddFlags(ActivityFlags.NewTask);

        var spec = TabHost.NewTabSpec(tag);
        var drawableIcon = Resources.GetDrawable(drawableId);
        spec.SetIndicator(label, drawableIcon);
        spec.SetContent(intent);

        TabHost.AddTab(spec);
    }
}

}

1 个答案:

答案 0 :(得分:0)

  

我没有使用演练项目,而是开始了我自己的项目。

然后仔细看看差异。

您继承自Activity,但没有TabHost属性。

TabActivity会这样做,因此请将您的班级更改为public class MainActivity : TabActivity。或者自己实例化TabHost(如果API支持)。