Xamarin.Android Click Button событие дает исключение, как я могу это исправить? - PullRequest
0 голосов
/ 23 апреля 2019

Когда я пытаюсь запустить эмулятор, происходит исключение на calcButton.Click + = делегат, я пытаюсь создать калькулятор чаевых, чтобы, когда пользователь нажимал кнопку, приложение начинало вычислять.

Исключение говорит о том, что было сгенерировано исключение 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"
            };
        }

Я также пытался

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"
            };
        }

Я ожидаю, что когда я нажму на кнопку, начнется вычисление

Редактировать: вот 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>

1 Ответ

0 голосов
/ 23 апреля 2019

Правильное использование выглядит следующим образом:

в вашей деятельности:

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"
        };
  }

, затем в , соответствующем axml (здесь activity_main ):

<?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>     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...