ImageButton单击不起作用

时间:2014-02-19 19:13:12

标签: c# android xamarin

我尝试了两种不同的方法来为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");
    }

单击按钮时没有任何反应......

可能导致此问题的原因是什么?

4 个答案:

答案 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!");