Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin-替换操作栏(Android 7.1-API 25)_Android_Xamarin_Xamarin.android_Android Actionbar_Android Toolbar - Fatal编程技术网

Xamarin-替换操作栏(Android 7.1-API 25)

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

我尝试过通过完全按照文档中的详细说明替换默认的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: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"
...