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

Alexander
05.10.2018
11:15:20

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

Google

Kirill
05.10.2018
11:28:00

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

Max
05.10.2018
11:30:40

Денис
05.10.2018
11:31:05

Kirill
05.10.2018
11:31:35

Денис
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

Кита
05.10.2018
12:33:48

Kirill
05.10.2018
12:34:11

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

Kirill
05.10.2018
12:39:35

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

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

Андрей Родионович
05.10.2018
14:55:22

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

Кита
05.10.2018
15:05:46

Kirill
05.10.2018
15:23:29

Кита
05.10.2018
16:11:32

Kirill
05.10.2018
16:19:42


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


Vlad
05.10.2018
18:35:56
Вечер добрый! Вот мой 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));
}
}
у вас в XAML написано WiFiNetworks, а в VM WifiNetworks


Kirill
05.10.2018
18:36:13


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

Vlad
05.10.2018
18:38:33

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 вывод клавиатуры андройдовской ?

Кита
05.10.2018
20:12:46

Google

Андрей Родионович
05.10.2018
20:13:53

Kirill
05.10.2018
20:15:02

Андрей Родионович
05.10.2018
20:15:41

Kirill
05.10.2018
20:16:00

Полицковой
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;
}
В списке после клика на кнопку остается то, что в конструкторе добавили.


Kirill
05.10.2018
20:20:23


Nikolay
05.10.2018
20:21:07

Max
05.10.2018
20:25:55

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

Nikolay
05.10.2018
20:27:22
Вот как определено св-во списка:
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

Nikolay
05.10.2018
20:28:58

Kirill
05.10.2018
20:29:02

Nikolay
05.10.2018
20:32:10

Google

Max
05.10.2018
20:35:03

Kirill
05.10.2018
20:35:59

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

Nikolay
05.10.2018
20:36:30

Max
05.10.2018
20:36:51

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

Kirill
05.10.2018
20:37:57


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