Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android点击按钮事件出现异常,如何修复?_C#_Android_Xamarin_Events_Button - Fatal编程技术网

C# Android点击按钮事件出现异常,如何修复?

C# Android点击按钮事件出现异常,如何修复?,c#,android,xamarin,events,button,C#,Android,Xamarin,Events,Button,当我尝试运行模拟器时,calculateButton上出现异常。单击+=委派,我尝试制作一个提示计算器,以便当用户单击按钮时,应用程序开始计算 例外情况是 System.NullReferenceException已被抛出对象引用未设置为对象的实例 我试了很多东西 Button calculateButton; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView

当我尝试运行模拟器时,calculateButton上出现异常。单击+=委派,我尝试制作一个提示计算器,以便当用户单击按钮时,应用程序开始计算

例外情况是 System.NullReferenceException已被抛出对象引用未设置为对象的实例

我试了很多东西

Button calculateButton;
protected override void OnCreate(Bundle bundle)
{
   base.OnCreate(bundle);
   SetContentView(Resource.Layout.activity_main);
   calculateButton = FindViewById<Button>(Resource.Id.calculateButton);
   calculateButton.Click += delegate
            {

                "insert calculations"
            };
        }
按钮计算按钮;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.activity_main);
calculateButton=FindViewById(Resource.Id.calculateButton);
计算按钮。单击+=委派
{
“插入计算”
};
}
我也试过了

Button calculateButton;
protected override void OnCreate(Bundle bundle)
{
   base.OnCreate(bundle);
   SetContentView(Resource.Layout.activity_main);
   calculateButton = FindViewById<Button>(Resource.Id.calculateButton);
   calculateButton.Click += OnCalculateClick;

   void OnCalculateClick (object sender, EventArgs e)
            {

                "insert calculations"
            };
        }
按钮计算按钮;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.activity_main);
calculateButton=FindViewById(Resource.Id.calculateButton);
计算按钮。单击+=OnCalculateClick;
void OnCalculateClick(对象发送方,事件参数e)
{
“插入计算”
};
}
我所期望的是,当我点击按钮时,计算将开始

编辑: 这里是activity_main.axml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minWidth="25px"
        android:minHeight="25px"
        android:id="@+id/linearLayout1">

    </LinearLayout >

    <include
        layout="@layout/content_main" />
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

这里是content_main.axml,我按照教程所说的那样在这里添加了按钮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android        ="http://schemas.android.com/apk/res/android"
    android:orientation  ="vertical"
    android:layout_width ="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:imeActionId="@+id/inputBill"
        android:layout_width ="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText1"
        android:layout_marginBottom="0.0dp"
        android:layout_marginTop="0.0dp" />

    <Button
        android:imeActionId="@+id/calculateButton"
        android:layout_width ="match_parent"
        android:layout_height="wrap_content"
        android:text         ="CALCULATE"
        android:id="@+id/button1" />


</LinearLayout>

正确用法如下

在您的活动中:

Button calculateButton;
protected override void OnCreate(Bundle savedInstanceState)
  {
      base.OnCreate(savedInstanceState);

      // Create your application here
      SetContentView(Resource.Layout.activity_main);
      calculateButton = FindViewById<Button>(Resource.Id.calculateButton);
      calculateButton.Click += delegate
        {

            "insert calculations"
        };
  }
按钮计算按钮;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//在此处创建应用程序
SetContentView(Resource.Layout.activity_main);
calculateButton=FindViewById(Resource.Id.calculateButton);
计算按钮。单击+=委派
{
“插入计算”
};
}
然后在对应的axml中(这里是活动\u main):



FindViewById(Resource.Id.calculateButton)
返回
null
,活动_main中是否存在calculateButton?@sushingover我在content_main.axml上创建了该按钮,活动_main上唯一相关的代码按钮是android.support.design.widget.FloatingActionButton,我从MainActivity中删除了它,因为教程告诉我要这样做,所以您应该在
活动_main
axml中添加一个id定义为
calculateButton
的按钮,因为当前活动是从
Resource.Layout.activity\u main
膨胀而来,所以该教程可能有问题,或者您做错了什么。要运行此代码,您的布局中必须有
calculateButton
按钮,而您没有显示它让我们说它是否有。它现在可以工作吗?我是在content\u main上做的,我不确定如何将它放在activity\u main上,我编辑我的问题以包括活动和内容。您应该使用id按钮1。您应该通过id找到您的控件,该id使用android:id定义
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <Button
     android:id="@+id/calculateButton"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"   
     android:text="Calculate"
    />
</RelativeLayout>