按钮onClick未绑定到“活动”中的方法

时间:2019-03-07 18:49:01

标签: c# android xamarin

因此,我尝试测试将点击事件添加到我的主要Button使用的.axml文件中的Activity上。我经历了很多其他的话题,并且尽我所能遵循了所提供的代码。但是,运行代码时出现以下异常。

Java.Lang.IllegalStateException: Could not find method testClick(View) 
in a parent or ancestor Context for android:onClick attribute 
defined on view class android.widget.Button with id 'login'

在Main.axml

  <Button
      android:text="Login"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="2"
      android:onClick="testClick"
      android:id="@+id/login" />

在Main.cs

public class Main : Activity
{
    protected override void OnCreate(Android.OS.Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.Main);
    }

    public void testClick(View view)
    {
        //Show alert saying clicked...
    }
}

我是否缺少某些配置,或者包括使它正常工作?

2 个答案:

答案 0 :(得分:1)

您总是可以这样做:

Button button1 = FindViewById<Button>(Resource.Id. login);
button1.Click += delegate => {
 //Show alert saying clicked...
};

如果您不想使用这种方式,则应首先Export,方法如下:answer

[Export("testClick")]
public void testClick(View view)
{
    //Show alert saying clicked...
}

如果这些都不起作用,请添加对Mono.Android.Export.dll的引用,然后在您的Activity中输入

[Java.Interop.Export("testClick")]
public void testClick(View view)
{
    //Show alert saying clicked...
}

答案 1 :(得分:0)

请在继承接口View.IOnclicklistener后尝试:

public class Main: AppcompatActivity, View.IonClickListener

如您所给的那样,它有助于实现接口的onclick方法:

public void testClick(View view)
    {
        //Show alert saying clicked...
    }