@xamarin_russia

Страница 597 из 619
Кита
05.10.2018
11:14:54
А голословные свои закидоны - оставь

Alexander
05.10.2018
11:15:20
Я пишу под нэйтив
Дак мохавэ же у него )))

Денис
05.10.2018
11:20:14
Здравствуйте товарищи, можете подсказать в чем причина. Когда добавляю text large на стандартную форму и допустим кнопку, то они почему-то устанавливаются только в одной точке. При произвольном выборе расположения, появляется знак недоступности. Благодарю за внимание!

Google
john
05.10.2018
11:29:31
коллеги, спасибо за помощь, и может быть извините за тон

(если кого-то задело)

Денис
05.10.2018
11:31:05
ничего не понял. какая ось? на какую форму? как выглядит результат?
Открываю layout первой страницы, чтобы добавить элементы на экран. Извиняюсь за некорректные объяснения.

Денис
05.10.2018
11:35:48
К сожалению я сейчас не за раб. Местом. Но вот фото где отображается что я хочу получить в итоге, но у меня почему элементы концентрируются в одном месте

Kirill
05.10.2018
11:37:21
К сожалению я сейчас не за раб. Местом. Но вот фото где отображается что я хочу получить в итоге, но у меня почему элементы концентрируются в одном месте
а код? какой лейаут используется? Ну и для просмотра результата лучше запускать приожение на устройстве и эмуляторе

Денис
05.10.2018
11:39:24
а код? какой лейаут используется? Ну и для просмотра результата лучше запускать приожение на устройстве и эмуляторе
Спасибо друг за то что не оставил без внимания. Вечером ещё раз попробую. Если повториться, то обязательно покажу код.

Kirill
05.10.2018
11:39:36
Кстати на счет папки с кэшем. Можно путь к ней получить просто: var temp = Path.GetTempPath(); Возвращает путь /data/user/0/<app_name>/cache/ (ну или /data/data/<app_name>/cache/ на старых версиях андроида.) на iOS тоже работает

Google
Kirill
05.10.2018
12:34:11
Кстати да. Но это интернал кэш по сути. А внешний есть только в Android
ну да. Но внешний - скорее всего тоже самое, но на /sdcard

Кита
05.10.2018
12:38:50
ну да. Но внешний - скорее всего тоже самое, но на /sdcard
Не) посмотри на файловую систему. Есть несколько партишнов. Не фолдеров. Это разные вещи. Сдкарта тоже один из партишнов. Приложения которые чистят телефон проверяют как раз партишн с кэшем в первую очередь потом по идее должны проходиться по всем кэшам сторонних приложений.

Кита
05.10.2018
12:40:26
Нет сейчас возможности на ведротелефоне проверить(

Matvey
05.10.2018
14:52:55
Ищется начинающий Xamarin разработчик, в лояльную стартап компанию, вам возможность получить опыт и среднее вознаграждение, возможно долговременное сотрудничество.

Alexander
05.10.2018
14:59:12
Подскажите пожалуйста по андройду. Как из TextView сделать AdaptiveIconDrawable ?

Кита
05.10.2018
15:05:46
Кстати на счет папки с кэшем. Можно путь к ней получить просто: var temp = Path.GetTempPath(); Возвращает путь /data/user/0/<app_name>/cache/ (ну или /data/data/<app_name>/cache/ на старых версиях андроида.) на iOS тоже работает
аккуратнее. на ios это private/var/mobile/Containers/Data/Application/<guid>/tmp, это не кэш фолдер, на ведре да - data/user/0/<pn>/cache/, на ios отличие tmp от Library/Caches в том что система может легко зачистить tmp когда ей надо. Так что очень платформ специфик этот метод

Кита
05.10.2018
16:11:32
ну кэш и пусть чистит когда надо. Никогда ничего важного нельзя в temp хранить.
ну у кэша может быть время жизни… несовметимое с планами ОС. Допустим тебе надо организовать оффлайн работу аппы чтобы ну минимум 24 часа кэш продержался, на ios надо для этого Library/Caches использовать

Kirill
05.10.2018
16:19:42
ну у кэша может быть время жизни… несовметимое с планами ОС. Допустим тебе надо организовать оффлайн работу аппы чтобы ну минимум 24 часа кэш продержался, на ios надо для этого Library/Caches использовать
Ну в таких случах да. У меня сейчас кэш вообще не критичен. Просто что бы меньше трафика гонять. оффлайн работа не предусмотрена. Так что вполне и эта папка пойдет.

Nikolay
05.10.2018
18:31:00
Покажите VM
Вечер добрый! Вот мой VM public class MainPageVM : INotifyPropertyChanged { #region Properties ObservableCollection<WifiNetworkDto> _WifiNetworks; public ObservableCollection<WifiNetworkDto> WifiNetworks { get { return _WifiNetworks; } set { _WifiNetworks = value; SetProperty(ref _WifiNetworks, value, "WifiNetworks"); } } WifiNetworkDto _selectedNetwork; public WifiNetworkDto SelectedNetwork { get { return _selectedNetwork; } set { _selectedNetwork = value; SetProperty(ref _selectedNetwork, value, "SelectedNetwork"); } } bool isBusy; public bool IsBusy { get { return isBusy; } set { if (isBusy == value) return; isBusy = value; OnPropertyChanged("IsBusy"); } } bool isConnected; public bool IsConnected { get { return isConnected; } set { if (isConnected == value) return; isConnected = value; OnPropertyChanged("IsConnected"); } } #endregion public event PropertyChangedEventHandler PropertyChanged; public MainPageVM() { } protected bool SetProperty<T>(ref T backingStore, T value, [CallerMemberName]string propertyName = "", Action onChanged = null) { if (EqualityComparer<T>.Default.Equals(backingStore, value)) return false; backingStore = value; onChanged?.Invoke(); OnPropertyChanged(propertyName); return true; } public void OnPropertyChanged([CallerMemberName]string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }

Kirill
05.10.2018
18:36:13
Nikolay
05.10.2018
18:37:17
у вас в XAML написано WiFiNetworks, а в VM WifiNetworks
А чего тогда оно в лог никуда не пишет, что биндинг к такому свойству невозможен?

Как вообще, при запуске приложения на телефоне под студийным дебагом заставить его подобные ляпы с биндингом в output студии выводить?

Vlad
05.10.2018
18:38:33
А чего тогда оно в лог никуда не пишет, что биндинг к такому свойству невозможен?
а вы уверены что не пишет? обычно в output очень много чего сыпется и поэтому может затерятся строка, вида типа Binding property NAME not found или что-то такое, точно не скажу а как ошибку оно не воспринимает это)

Nikolay
05.10.2018
18:39:16
"Binding property NAME not found" вообще ничего такого не было. Т.е. ни одной видимой жалобы на binding

Google
Nikolay
05.10.2018
18:41:11
Сейчас попробую с исправленным названием запустить...

Вот старый output https://pastebin.com/yae0iSgs

Kirill
05.10.2018
18:46:18
Nikolay
05.10.2018
18:46:37
Я под андроид пишу

Хм, а проканала смена буквы :)

Kirill
05.10.2018
19:13:05
Хм, а проканала смена буквы :)
логично. Байдиннги регистрозависимы..

Nikolay
05.10.2018
19:14:43
Но что самое занятное - сделал uninstall с телефона, полный rebuild в студии со старой нотацией биндинга, запуск - и вуаля, я вижу в output : [0:] Binding: 'WiFiNetworks' property not found on 'WiFiManager.Common.MainPageVM', target property: 'Xamarin.Forms.ListView.ItemsSource'10-06

Вопрос - как заставить приложение падать при получении такой мессаги?

https://pastebin.com/sGy7yKJR

Kirill
05.10.2018
19:16:58
Nikolay
05.10.2018
19:17:22
Как по мне - так лучше падало бы

Я бы хоть увидел тогда непорядок сразу, а не гадал бы почему список пуст

Kirill
05.10.2018
19:20:33
Как по мне - так лучше падало бы
Может только в дебаге. Но вообще бывают ситуации когда допускается отсутствие пропертей. А так просто надо было проверить правильность всего. А в будущем вообще названия пропертей копировать

Полицковой
05.10.2018
19:33:41
ребят, как убрать панель эту, бар который

сверху ленту

с названием приложения



когда эмулятор запускаешь и в коде что то меняешь, нужно перезапускать эмулятор?

и еще вопрос/ Можно ли выключть в эмуляторе VS вывод клавиатуры андройдовской ?

Google
Kirill
05.10.2018
20:15:02
В ios емуляторе она не выводится
выводится. По command+K можно показывать и скрывать.

Андрей Родионович
05.10.2018
20:15:41
Полицковой
05.10.2018
20:16:53
каждый раз хороший ответ даешь)

Nikolay
05.10.2018
20:18:00
Может только в дебаге. Но вообще бывают ситуации когда допускается отсутствие пропертей. А так просто надо было проверить правильность всего. А в будущем вообще названия пропертей копировать
Так, список подтягивается черезщ биндинг. Но теперь обновляться не хочет. ВотXAML <Button Text="Refresh" Clicked="RefreshNetworks_Clicked" ></Button> . . . <ListView x:Name="lstNetworks" Grid.Row="1" ItemsSource="{Binding WifiNetworks}" SelectedItem="{Binding SelectedNetwork}" > <ListView.ItemTemplate> <DataTemplate> <ViewCell> <StackLayout > <Label Text="{Binding Name}" /> <Label Text="{Binding BssID}" /> </StackLayout> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> Вот код: public MainPage2() { var TheVM = new MainPageVM(); var lst1 = new List<WifiNetworkDto>() { new WifiNetworkDto() { Name="AAA", BssID="qwerty" }, new WifiNetworkDto() { Name="BBB", BssID="asdf" } }; TheVM.WifiNetworks = new ObservableCollection<WifiNetworkDto>(lst1); this.BindingContext = TheVM; InitializeComponent(); } public void RefreshNetworks_Clicked(object sender, EventArgs e) { var qq = lstNetworks.ItemsSource; var qq2 = lstNetworks.BindingContext; var vm = this.BindingContext as MainPageVM; vm.WifiNetworks = new ObservableCollection<WifiNetworkDto>(); vm.SelectedNetwork = null; } В списке после клика на кнопку остается то, что в конструкторе добавили.

Max
05.10.2018
20:25:55
Да
Нет

Андрей Родионович
05.10.2018
20:26:25
Нет
Я подумал емулятор==приложение

Nikolay
05.10.2018
20:27:22
а если сделать vm.WifiNetworks = null? Так вроде всё правильно
Пофигу. Прикол в том, что после присвоения null qq остается прежним (с 2 элементами)

Вот как определено св-во списка: ObservableCollection<WifiNetworkDto> _WifiNetworks; public ObservableCollection<WifiNetworkDto> WifiNetworks { get { return _WifiNetworks; } set { _WifiNetworks = value; SetProperty(ref _WifiNetworks, value, "WifiNetworks"); } }

Kirill
05.10.2018
20:28:41
Пофигу. Прикол в том, что после присвоения null qq остается прежним (с 2 элементами)
попробуй InitializeComponent(); перенести в начало конструктора

Nikolay
05.10.2018
20:28:58
Nikolay
05.10.2018
20:32:10
да
пофигу

Google
Kirill
05.10.2018
20:35:59
Почему тут 2 раза значение устанавливается?
кстати да.возможно как раз в этом проблема

Max
05.10.2018
20:36:24
Нужен только OnPropertyChanged

Nikolay
05.10.2018
20:36:30
кстати да.возможно как раз в этом проблема
Это была копипаста со stackoverflow :)

Max
05.10.2018
20:36:51
Это была копипаста со stackoverflow :)
Могу посычувствовать

Nikolay
05.10.2018
20:37:21
проверяю...

Kirill
05.10.2018
20:37:57
Это была копипаста со stackoverflow :)
как выше говорил надо понимать вксь код, который вставляется в проект

Denis
06.10.2018
13:52:46
Все никак не могу запустить номрально GooglePay все прописано вроде как надо но именно метод commit вызывает краш SupportFragmentManager.BeginTransaction().Replace(Resource.Id.container, walletFragment).Commit(); не понимаю в чем дело. такое ощущение что Resource.Id.container, walletFragment не совместимы чтобы делать Replace Может все же кто-то сталкивался?

логи заершаются на вылете тут и выдется полседняя строка Assembly Ref addref Mono.Android[0x9d73cda0] -> System.Runtime.Serialization[0x87b63020]: 3

вот такой код используется GoogleApiClient api = new GoogleApiClient.Builder(Android.App.Application.Context, this, this) .AddConnectionCallbacks(this) .AddOnConnectionFailedListener(this) .AddApi(WalletClass.API).Build(); var walletFragment = SupportWalletFragment.NewInstance(WalletFragmentOptions.NewBuilder() .SetEnvironment(WalletConstants.EnvironmentSandbox) .SetMode(WalletFragmentMode.BuyButton) .SetTheme(WalletConstants.ThemeLight) .SetFragmentStyle(new WalletFragmentStyle() .SetBuyButtonText(BuyButtonText.BuyWithGoogle) .SetBuyButtonAppearance(BuyButtonAppearance.Classic) .SetBuyButtonWidth(Dimension.MatchParent)) .Build()); var maskedWalletRequest = MaskedWalletRequest.NewBuilder().SetPaymentMethodTokenizationParameters( PaymentMethodTokenizationParameters.NewBuilder() .SetPaymentMethodTokenizationType(PaymentMethodTokenizationType.PaymentGateway) .AddParameter("gateway", "cloudpayments") .AddParameter("gatewayMerchantId", "xxxxxxxxxxxxxxx") .Build()) .SetShippingAddressRequired(true) .SetMerchantName("Xamarin") .SetPhoneNumberRequired(true) .SetShippingAddressRequired(true) .SetEstimatedTotalPrice("1.00") .SetCurrencyCode("USD") .Build(); walletFragment.Initialize(WalletFragmentInitParams.NewBuilder() .SetMaskedWalletRequest(maskedWalletRequest) .SetMaskedWalletRequestCode(MASKED_WALLET_REQUEST) .Build()); SupportFragmentManager.BeginTransaction().Replace(Resource.Id.container, walletFragment).Commit();

в манифесте wallet.api тоже прописан

Кита
06.10.2018
14:03:43
Denis
06.10.2018
14:05:36
forms судя по всему. я его дорабатываю. не сам создавал

Кита
06.10.2018
14:06:18
forms судя по всему. я его дорабатываю. не сам создавал
Ну вот возможно не тот фрагмент менеджер

Страница 597 из 619