Xamarin中所有活动的标题点击事件的常见标题android
我正在开发一个xamarin android应用程序,在那里我用来调用所有活动中的标题活动。我的代码法洛斯Xamarin中所有活动的标题点击事件的常见标题android
我Main.axml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Header aligned to top -->
<include layout="@layout/Header"
android:id="@+id/includeheader"
android:layout_alignParentTop="true" />
<!-- Content below header and above footer -->
<include layout="@layout/Content"
android:id="@+id/includecontent" />
<!-- Footer aligned to bottom -->
<include layout="@layout/Footer"
android:id="@+id/includefooter"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
我Header.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="50dip">
<TableRow
android:background="#2c2c2c"
android:padding="10dip">
<TextView
android:id="@+id/scanHome"
android:layout_width="0dip"
android:layout_weight="2.5"
android:textSize="22sp"
android:textStyle="bold"
android:gravity="center"
android:text="" />
<Button
android:id="@+id/Settings"
android:layout_width="0dip"
android:layout_height="30dip"
android:layout_marginLeft="10dip"
android:layout_weight="0.17"
android:gravity="center"
android:width="35dip"
android:clickable="true"
android:onClick="SettingsClick"/>
<Button
android:id="@+id/logout"
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_weight="0.27"
android:gravity="center"
android:width="40dip" />
</TableRow>
</TableLayout>
</LinearLayout>
MainActivity.class
namespace LayoutApp
{
[Activity(Label = "LayoutApp", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Header
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
setHeading("Scan Home");
}
}
}
Header.class
[Activity(Label = "LayoutApp", MainLauncher = false)]
public abstract class Header : Activity , View.IOnClickListener
{
private TextView HeaderText;
private Button Settings;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Header);
Settings = FindViewById<Button>(Resource.Id.Settings);
Settings.Click += delegate
{
};
}
protected void setHeading(string text)
{
if (HeaderText == null)
HeaderText = FindViewById<TextView>(Resource.Id.scanHome);
if (HeaderText != null)
HeaderText.Text = text;
}
public void SettingsClick()
{
}
}
因此,我正在MainActivity中使用Header Activity,就像在使用include属性的本机android中一样。当我加载主启动器时,标题也显示,但点击事件不能从MainActivity工作,其中文本从setHeading方法应用。
调试时,错误显示为'java.lang.illegalistateexception:无法在viewclass的onclick处理程序的activity类中找到方法SettingsClick(View)“。
所以,我的问题在这里是我想获得标题的Click事件。请仔细研究一下我的问题,并帮助我解决问题。提前致谢。
布局文件(AXML)没有链接到与它们具有相同名称的活动。
在您的Main.axml代码中,您将包含(添加)来自Header.axml的布局代码;但是,MainActivity.cs代码与Main.axml没有关系,就像HeaderActivity.cs代码与Header.axml代码没有关系。
在MainActivity.cs代码中,SetContentView(Resource.Layout.Main)将Main.axml布局(包含Header.axml代码)应用于MainActivity,但不应用HeaderActivity.cs中的方法。
如果你想在你的应用程序与工具栏的应用程序和底酒吧,有一个很好的教程在这里:http://mateoj.com/2015/06/21/adding-toolbar-and-navigation-drawer-all-activities-android/
你也应该在Android碎片看看。
@kumar Sudheer,我不知道Xamarin的发展,但我可以通过查看代码和异常情况了解你想要做什么。
只需通过View
对象作为参数在头活动
public void SettingsClick(View v)
{
}
Android中的SettingClick
方法,当你在布局文件中定义的点击处理那么该方法的签名会public void <clickHandler>(View v) {}
。
你没有通过的,这就是为什么系统无法找到你的活动方法,这就是为什么你所得到的java.lang.IllegaliStateException
View
参数