MonoDroid onClick从XML没有这样的方法错误

时间:2012-04-03 16:16:25

标签: android xamarin.android

LiftInspection.axml

<Button
      android:id="@+id/expandCollapse1"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"          
      android:drawableLeft="@drawable/expand_arrow"
      android:text="Function/Controls"
      android:textSize="20sp"
      android:textColor="@android:color/white"
      android:background="@drawable/expandCollapseButton"
      android:gravity="center"
      android:onClick="button_Click"/>

LiftInspection.cs

protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        SetContentView(Resource.Layout.LiftInspection);
    }

public void button_Click(View view)
    {
        Toast.MakeText(this, "Testing", ToastLength.Long).Show();           
    }

单击按钮后,应用程序崩溃并强行关闭。在Android日志中,我发现“java.lang.IllegalStateException:无法在活动类cpecfieldapp.LiftInspection中找到方法button_Click(View)for view handler to android handler.widget.Button with id'expandCollapse1'”

我在从xml设置点击事件时发现的所有内容都只显示了我正在做的事情。将它放在android:onClick中从XML并具有公共空白,其中唯一的参数是实现该布局的活动中的View。我错过了什么?

3 个答案:

答案 0 :(得分:3)

这不是当前版本的Mono for Android支持的内容。您可以参考this bug report了解有关它的详细信息。

答案 1 :(得分:0)

我已通过在[Export]方法中添加button_Click属性来实现此目的。

答案 2 :(得分:0)

现在可以了。你需要做三件事:

  1. 参考Mono.Android.Export
  2. using Java.Interop
  3. 注释您的事件方法,如下所示:
  4. [Export ("button_Click")]  
    public void button_Click(View view)  
        {  
            Toast.MakeText(this, "Testing", ToastLength.Long).Show();             
        }