小编Yur*_*biy的帖子

Android.OS.NetworkOnMainThreadException:在 async/await 块中

我正在尝试从指向图像的 URL 获取可绘制对象。但问题是,在 android 中你不应该在主线程上执行网络任务。因此,我使用了 async/await 块,但错误仍然不断发生。这是代码:

page.Appearing += async(sender, ev3) =>
                    {
                        if ( GetToolbar == null ) return;

                        GetToolbar.Subtitle = viewModel?.SubTitle;

                        if ( viewModel == null ) return;

                        if ( viewModel.AvatarUrl.Contains("?") && !viewModel.AvatarUrl.Contains("gravatar") )
                            viewModel.AvatarUrl = viewModel.AvatarUrl
                                .Substring(0, viewModel.AvatarUrl.IndexOf("?", StringComparison.Ordinal));

                        //var stream = Context.ContentResolver.OpenInputStream(Android.Net.Uri.Parse(viewModel.AvatarUrl));

                        await SetLogo(viewModel);
 }

private async Task SetLogo(PublicRepositoryPageViewModel viewModel)
        {
            var url = new URL(viewModel.AvatarUrl);
            var connection = url.OpenConnection();
            var stream = connection.InputStream;
            var logo = await Drawable.CreateFromStreamAsync(stream, viewModel.Title + "_avatar");
            GetToolbar.Logo = logo;
        } …
Run Code Online (Sandbox Code Playgroud)

c# android asynchronous xamarin.android xamarin

3
推荐指数
1
解决办法
2961
查看次数

可绑定属性的setter永远不会触发

我为Label创建了一个自定义渲染器.现在我想用它的焦点状态进行操作,所以我创建了可绑定的属性和事件.当我从自定义渲染器更改可绑定属性时,它工作正常:Element.IsFocused = true; 但是当我从视图模型更改它时,它会影响XAML视图,但由于某些原因,不会为此属性调用setter.这是代码:

在自定义类中:

 public new static readonly BindableProperty IsFocusedProperty =
           BindableProperty.Create(nameof(IsFocused), typeof(bool), typeof(FloatingEntry), false);

        public new bool IsFocused
        {
            get { return (bool)GetValue(IsFocusedProperty); }
            set
            {
                SetValue(IsFocusedProperty, value);
                if (value) Focus();
            }
        }  
Run Code Online (Sandbox Code Playgroud)

在XAML中:

IsFocused="{Binding PasswordEntryIsFocused}"
Run Code Online (Sandbox Code Playgroud)

在视图模型中:

 private bool _passwordEntryIsFocused;
         public bool PasswordEntryIsFocused
            {
                get { return _passwordEntryIsFocused; }
                set
                {
                    SetProperty(ref _passwordEntryIsFocused, value);
                }
            }
Run Code Online (Sandbox Code Playgroud)

在View Model中的某种方法: PasswordEntryIsFocused = true;

这不是new关键字,我尝试没有它.并且绑定工作,因为我试图将它与可视属性绑定,IsVisible就像它应该工作一样,但是setter总是只从自定义渲染器调用.

我想我可能会在可绑定的属性工作环境中遗漏一些东西.

c# data-binding wpf xamarin.forms

2
推荐指数
1
解决办法
719
查看次数

使用Xamarin效果时出现NullPointerException

我决定加下划线EffectLabel,和做一步一步在这里,但由于某些原因,每当我有Label这个Effect,在Android和iOS我的应用程序崩溃.使用诊断日志,仍然没有消息,可以说我在哪里出问题.其实,它只是开始使我View有这个Label,在那之后我的应用程序变得不活跃,手机打开它的主屏幕,并在VS,调试立即停止.在Android设备日志中,我发现了这个:

在此输入图像描述 在iOS设备日志中:

在此输入图像描述

代码类似于上面链接中的代码.我已经试图找到一些原因,实际上,我没有.我试着用硬核名字.此外,没有达到类或平台特定类中的断点.如果我,例如,注释ResolutionGroupName属性,该应用程序将工作并将Label显示,但确定没有下划线.

UPDATE

对不起,也许带有错误的iOS屏幕截图与当前问题无关.但我有一个可能是:

在此输入图像描述

custom-renderer xamarin.ios xamarin.android xamarin xamarin.forms

1
推荐指数
1
解决办法
205
查看次数