#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();
Примечание: Теперь, возможно, вы поймете первый смысл, почему должен быть установлен строковый идентификатор ресурса.