设置SetContentView后,xamarin表单中的未处理异常

时间:2017-11-20 18:19:21

标签: xamarin xamarin.forms xamarin.android

我需要将我的应用图标放在工具栏的左侧,因此我在Toolbar.axml中放置了ImageButton。我设置了SetContentView,以便我可以使用ImageButton访问FindViewById并收听点击事件。

但是在添加SetContentView行后,我的应用会抛出UnhandledException。

以下是我的Main.axml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <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"
       android:popupTheme="@style/ThemeOverlay.AppCompat.Light">

   <ImageButton
       android:src="@drawable/appicon"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="?attr/colorPrimary"
       android:id="@+id/homeicon" />
   </android.support.v7.widget.Toolbar>

</LinearLayout>

我的MainActivity.cs如下所示:

[Activity(Label = "XamarinToolBar", Icon = "@drawable/icon", Theme = 
"@style/MainTheme", MainLauncher = true, ConfigurationChanges = 
ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : 
        global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            //TabLayoutResource = Resource.Layout.Tabbar;
            //ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);

            ImageButton homeButton = (ImageButton)FindViewById<ImageButton>(Resource.Id.homeicon);
            homeButton.Click += HomeButton_Click;

            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App());
        }

        private void HomeButton_Click(object sender, EventArgs e)
        {

        }
    }

2 个答案:

答案 0 :(得分:2)

问题在于:

  

公共类MainActivity:           全球:: Xamarin.Forms.Platform.Android.FormsAppCompatActivity

您正在将xamarin表单FormsAppCompatActivity与AppCompactActivity混合,并从cs文件中删除这两行

        global::Xamarin.Forms.Forms.Init(this, bundle);
        LoadApplication(new App());

我希望它有所帮助

古德勒克!

答案 1 :(得分:1)

我认为你正在尝试混合和匹配xamarin.forms“FormsAppCompatActivity”,并使其行为像普通的android Activity,其中不应该是这种情况,因为xamarin.forms“FormsAppCompatActivity”有自己的底层渲染引擎使用xaml页面(例如ContentPage,MasterDetailPage等)。尝试创建一个Android项目。