我需要将我的应用图标放在工具栏的左侧,因此我在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)
{
}
}
答案 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项目。