Я начинаю с ксамарина. Я показываю список со всеми доступными языками. Пользователь нажимает на один и может сохранить его. Вот мой код XAML:
<ListView x:Name="LanguageList"
SelectionMode="Single"
ItemSelected="OnSelected">
</ListView>
CS:
private async void SetListLanguage(bool init)
{
itemList = new ObservableCollection<string>();
l = await TextToSpeech.GetLocalesAsync();
foreach (var locale in l)
{
if (filter.Length == 0)
itemList.Add(locale.Name);
else if (locale.Name.Contains(filter))
itemList.Add(locale.Name);
if (init && locale.Name == "English")
{
Console.WriteLine("Initiating with English");
local = locale;
}
}
LanguageList.ItemsSource = itemList;
}
void OnSelected(object sender, SelectedItemChangedEventArgs e)
{
selectedName = e.SelectedItem as string;
Console.WriteLine("Selected " + selectedName);
foreach (var locale in l)
{
if (selectedName != "" && locale.Name == selectedName)
{
Console.WriteLine("Registered locale for " + selectedName);
local = locale;
}
}
}
Когда я нажимаю на любом языке, например на китайском, это дает мне странный вывод.
Selected Chinese (Taiwan)
Registered locale for Chinese (Taiwan)
02-25 16:01:09.938 I/mono-stdout(15514): Selected Chinese (Taiwan)
02-25 16:01:09.938 I/mono-stdout(15514): Registered locale for Chinese (Taiwan)
Selected
02-25 16:01:09.943 I/mono-stdout(15514): Selected
Selected Korean (South Korea)
Registered locale for Korean (South Korea)02-25 16:01:09.949 I/mono-stdout(15514): Selected Korean (South Korea)
02-25 16:01:09.949 I/mono-stdout(15514): Registered locale for Korean (South Korea)
Я пытался удалить корейский, он дает мне то же самое с французским. Так что это как-то связано с тем, что он первый в списке, но я не понимаю, почему.