Xamarin-替换操作栏(Android 7.1-API 25)
我尝试过通过完全按照文档中的详细说明替换默认的actionbar来创建工具栏,但应用程序没有运行,并在Xamarin-替换操作栏(Android 7.1-API 25),android,xamarin,xamarin.android,android-actionbar,android-toolbar,Android,Xamarin,Xamarin.android,Android Actionbar,Android Toolbar,我尝试过通过完全按照文档中的详细说明替换默认的actionbar来创建工具栏,但应用程序没有运行,并在SetActionBar(工具栏)处抛出错误。以下是错误消息: Java.Lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set android:windowA
SetActionBar(工具栏)处抛出错误代码>。以下是错误消息:
Java.Lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set android:windowActionBar to false in your theme to use a Toolbar instead.
以下是全部错误:
Unhandled Exception:
Java.Lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set android:windowActionBar to false in your theme to use a Toolbar instead.
以下是我所有代码的git repo:
am使用visual studio enterpise 2017,版本15.5
我哪里做错了?
Xamarin-替换操作栏(Android 7.1-API 25)
您的项目中有一些错误
首先,请阅读此内容,您使用了一些错误的项目。您应该使用
<item name="windowNoTitle">
其次,安装Xamarin.Android.Support.v7.AppCompat
nuget软件包:
然后为您扩展AppCompatActivity
,而不是Activity
请注意,尽管您在项目中编写了自定义主题,但您没有将其用于main活动
。您可以阅读文档:,为您添加主题MainActivity
:
[Activity(Label = "App3", MainLauncher = true, Theme = "@style/MyTheme")]
public class MainActivity : AppCompatActivity
{
...
}
var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
if (toolbar != null)
{
SetSupportActionBar(toolbar);
SupportActionBar.Title = "Hello from Appcompat Toolbar";
}
第三,在您的项目中,您使用的是Android.Widget.Toolbar
,请将其更改为Android.Support.V7.Widget.Toolbar
在您的main活动中
:
[Activity(Label = "App3", MainLauncher = true, Theme = "@style/MyTheme")]
public class MainActivity : AppCompatActivity
{
...
}
var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
if (toolbar != null)
{
SetSupportActionBar(toolbar);
SupportActionBar.Title = "Hello from Appcompat Toolbar";
}
在我这方面,它可以正常工作。似乎您没有创建自定义主题来排除默认操作栏false
:它存在于不调试异地资源中,但是从仿真器/设备中删除apk并执行清理/重建仍会返回相同的错误:未处理的异常:Java.Lang.IllegalStateException:此活动已具有由window decor提供的操作栏。不要请求Window.FEATURE\u ACTION\u工具栏,并在主题中将android:windowActionBar设置为false以使用工具栏。发生
-TLDR;如果要提供自己的主题,请使用主题.AppCompat.NoActionBar
主题。
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
...