我尝试了两种不同的方法来为ImageButton设置事件,但两种方法都没有效果。首先,我尝试在axml文件中添加onClick:
<ImageButton
android:src="@drawable/homeInfoButtonImages"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/homeInfoButton"
android:layout_marginLeft="200dp"
android:layout_marginTop="600dp"
android:background="@null"
android:onClick="infoButtonClick" />
在Activity.cs中:
private void infoButtonClick()
{
Console.Write("Clicked");
}
单击按钮后应用程序崩溃。
我在Activity.cs中尝试的第二种方法:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Home);
// Create your application here
ImageButton button = FindViewById<ImageButton>(Resource.Id.homeInfoButton);
button.Click += delegate
{
infoButtonClick();
};
}
private void infoButtonClick()
{
Console.Write("Clicked");
}
单击按钮时没有任何反应......
可能导致此问题的原因是什么?
答案 0 :(得分:2)
在从xml上的onClick属性调用的方法中,必须传递视图的参数,并且它必须是公共的:
public void infoButtonClick(View v)
{
Console.Write("Clicked");
}
您可以阅读here
答案 1 :(得分:1)
请删除Console.Write("Clicked");
并进行测试。
答案 2 :(得分:0)
我在eclipse中使用java编码。我遇到了同样的问题。所以我不知道它是否适合你。
尝试公开 void infoButtonClick()而不是私有。
这个解决方案对我有用。认为这可能有所帮助。
答案 3 :(得分:0)
Console.WriteLine可能有一些意想不到的行为(至少我所经历的)。以下代码适用于我。
FindViewById<ImageButton> (Resource.Id.imageButton1).Click += (s, e) =>
Log.Info (s.ToString (), "Image button clicked!");