我使用以下示例: https://github.com/UdaraAlwis/Xamarin-Playground/tree/master/XFNavBarBackBtnClickOverride。
但是FindViewById(Resource.Id.toolbar)返回 null 。 在新项目中,此示例正常工作。在我的项目上无法正常工作。我还能检查什么?
MainAcitvity.cs
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
Xamarin.Essentials.Platform.Init(this, bundle);
Forms.Init(this, bundle);
CrossCurrentActivity.Current.Init(this, bundle);
Rg.Plugins.Popup.Popup.Init(this, bundle);
ToastNotification.Init(this);
Xamarin.FormsMaps.Init(this, bundle);
DependencyService.Register<ToastNotification>();
LoadApplication(new App());
Toolbar toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
}
Toolbar.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
styles.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MainTheme" parent="MainTheme.Base">
</style>
<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">#2196F3</item>
<item name="colorPrimaryDark">#1976D2</item>
<item name="colorAccent">#172239</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>
<item name="android:textAllCaps">false</item>
</style>
<style name="AppCompatDialogStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">#FF4081</item>
</style>
<color name="ListViewHighlighted">@layout/gradient</color>
</resources>
答案 0 :(得分:1)
以下行
Toolbar toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
当您未将工具栏定义为Android.Support.V7.Widget.Toolbar
时,它将被初始化为Android..Widget.Toolbar
。因此,方法FindViewById
将永远不会在xml中找到工具栏。
改为以下行。
Android.Support.V7.Widget.Toolbar toolbar = this.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
您需要将MainPage
设置为app.xaml.cs中的NavigationPage。
MainPage = new NavigationPage(new xxxPage());