Добавление 2 чисел в кнопку C # Xamarin не будет работать

#c# #xamarin

#c# #xamarin

Вопрос:

Я пытаюсь выполнить простое добавление в C # с помощью Xamarin, кнопка, которая должна добавлять числа, отказалась добавлять числа и, следовательно, не будет работать каким-либо образом

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

 protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.activity_main);

    /* Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
     SetSupportActionBar(toolbar);*/

    /*FloatingActionButton fab = FindViewById<FloatingActionButton>(Resource.Id.fab);
    fab.Click  = FabOnClick;*/

    myLabel = FindViewById<TextView>(Resource.Id.myLabel);
    myLabel2 = FindViewById<TextView>(Resource.Id.myLabel2);
    num1 = FindViewById<EditText>(Resource.Id.num1);
    num2 = FindViewById<EditText>(Resource.Id.num2);
    myButton = FindViewById<Button>(Resource.Id.myButton);

    myButton.Click  = (o, e) =>
    {

        int number1;
        int number2;
        if (int.TryParse(num1.Text, out number1) amp;amp; int.TryParse(num2.Text, out number2))
        {
            int result = number1   number2;
            // dialog.SetMessage(string.Format("Result is given as: "   result));
            Toast.MakeText(this, result, ToastLength.Short).Show();
        }
    };
}
 

Теперь проблема / исключение, которые она вызывает, возникают с этой точки :

 Toast.MakeText(this, result, ToastLength.Short).Show();
 

Который должен показывать результаты, я совсем новичок в Xamarin. Итак, мне, похоже, здесь нужна помощь. Должен ли я Convert.ToString()

Комментарии:

1. result.ToString() (или $"{result}" )

2. какое конкретное исключение или сообщение об ошибке?

3. @Jason Передавая int для второго параметра MakeText , он пытается использовать значение int в качестве идентификатора ресурса.

4. Как глупо с моей стороны! Строка была тем, что мне было нужно. Спасибо @SushiHangover

5. @SushiHangover я это знаю, но пытался указать ou t на важность публикации точных сообщений об ошибках вместо расплывчатых описаний

Ответ №1:

Теперь проблема / исключение, которые она вызывает, происходят из этой точки: Toast.MakeText(this, result, ToastLength.Короткое).Показать ();

введите описание изображения здесь Давайте посмотрим на изображение вверх, я думаю, вы нашли причину. Toast.MakeText второй параметр выглядит как тип int .Однако, когда вы устанавливаете int (результат), возникает ошибка.Поэтому, если проверить более тщательно, мы обнаружим, что это resId , идентификатор ресурса и строковый идентификатор ресурса.(Почему не другой идентификатор ресурса типа, причина во втором решении)

Решение одно :

Вы можете установить идентификатор Sting, тогда он может работать.

пример: Toast.MakeText(this, Resource.String.abc_capital_on, ToastLength.Short).Show();

Из документа это может быть лучшим рекомендуемым способом Xamarin Android.

Решение два :

В документе Google development вы обнаружите, что второй параметр — это CharSequence(читаемая последовательность значений char).В некотором смысле CharSequence представляет строку в Android, но не включает все случаи, конкретную разницу можно увидеть в документе.Поэтому, если вы преобразуете int (результат) в строку. Тогда это тоже будет работать. Вот несколько методов для справки:

 string FinalResult = result.ToString();
string FinalResult = Convert.ToString(result);
string FinalResult = string.Format("{0}", result);
string FinalResult = $"{result}";
string FinalResult = ""   resu<
string FinalResult = string.Empty   resu<
string FinalResult = new StringBuilder().Append(result).ToString();

Toast.MakeText(this, FinalResult, ToastLength.Short).Show();
 

Примечание: Теперь, возможно, вы поймете первый смысл, почему должен быть установлен строковый идентификатор ресурса.