这里我需要在我的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?谢谢你的帮助...
答案 0 :(得分:1)
正如我从您的代码中看到的那样,您使用工具栏作为自定义操作栏。如果是这样,那么您需要将其设置为操作栏
var toolbar = FindViewById<Toolbar>("Your toolbar id");
SetSupportActionBar(toolbar);
如果您不使用工具栏,则需要删除
@android:style/Theme.NoTitleBar