自定义ActionBar导致Tabs无法工作

时间:2016-03-14 04:16:12

标签: android xamarin tabs android-actionbar

这里我需要在我的Xamarin Android项目中使用自定义操作栏和标签片段。 因为我有自定义操作栏,我需要关闭原来的ActionBar,所以这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pitsapp1x.pitsapp1x" android:versionCode="1" android:versionName="1.0">
    <uses-sdk android:minSdkVersion="16" />
    <application android:theme="@android:style/Theme.NoTitleBar"></application>
</manifest>

现在在我的标签上,它需要ActionBar.NavigationMode

public class frmTab : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.frmTab);

HERE>>>     this.ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;

            AddTab("Buy", Resource.Drawable.Icon, new frmTabBuy());
            AddTab("Home", Resource.Drawable.Icon, new frmTabHome());
        }

        private void AddTab(string tabText, int iconResourceId, Fragment fragment)
        {
 HERE>>>    var tab = this.ActionBar.NewTab();
            tab.SetText(tabText);
            tab.SetIcon(iconResourceId);

            tab.TabSelected += delegate(object sender, ActionBar.TabEventArgs e)
            {
               e.FragmentTransaction.Replace(Resource.Id.fragmentContainer, fragment);
            };

 HERE>>>    this.ActionBar.AddTab(tab);
    }

导致结果保持回归

System.NullReferenceException: Object reference not set to an instance of an object

任何解决方案都可以链接到我的Customize ActionBar或不使用Action Bar?谢谢你的帮助...

1 个答案:

答案 0 :(得分:1)

正如我从您的代码中看到的那样,您使用工具栏作为自定义操作栏。如果是这样,那么您需要将其设置为操作栏

var toolbar = FindViewById<Toolbar>("Your toolbar id");
SetSupportActionBar(toolbar); 

如果您不使用工具栏,则需要删除

@android:style/Theme.NoTitleBar