Xamarin深坑集锦

Xamarin深坑集锦
            
            
                
                                                                                                                                            2018年04月09日 14:39:44
                    蓝泉
                    阅读数 2132更多
                                                                                                                
                                分类专栏:
                                                                                                            
                                            Xamarin                                        
                                                                                                
                                        
                
                                    
            
        
    
    
                
                                                
                
                
                    
            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 
               
                    本文链接:https://blog.csdn.net/m0_37698386/article/details/79866141
                
            
                    
                                                    
                                        
                
                                            1 图片无法引用问题现象:图片明明已经放入安卓及IOS的资源目录下,其他图片可以用,只有个别图片无法引用。问题原因:有时直接复制进来的资源文件没有指定生成操作(偶然事件),导致程序编译时找不到目标文件。解决方式:右键目标图片查看属性,安卓文件则在“生成操作”栏目选择“AndroidResource”,IOS则选择“BundleResource”,然后重新生成解决方案。(有时重新生成解决方案后仍不能选择,需要重新打开项目尝试)  2 Tab子页数据不显示问题现象:Tab页中只有第一个页面显示正常,后面的页面不显示绑定的数据信息。问题原因:数据初始化操作在重写的方法OnNavigatedTo中执行,由于只有第一个Tab页执行了OnNavigatedTo方法,所以只有Tab页中的第一个正常显示绑定的数据信息。解决方式:将方法转移至构造方法(函数)中执行。3 页面跳转不显示头部导航栏问题现象:页面跳转时,没有头部导航栏信息,直接显示页面内容。如下图所示: 问题原因:没有在NavigationPage的导航关系下。解决方式:在页面跳转时,添加 “NavigationPage/” ,如下图:  4 子页面不显示返回按钮问题现象:页面跳转时,子页面头部不显示返回按钮。如下图所示: 问题原因:父页面不在NavigationPage的导航关系下。解决方式:在跳转至父页面的地方添加“NavigationPage/”,此处在“App.xaml.cs”文件中添加,如下图:5 页面显示两级头部导航栏问题现象:页面显示两级头部导航栏,如下图所示: 问题原因:A、父页面已经在NavigationPage关系下,父页面跳转至子页面时又添加了“NavigationPage/”关系。B、子页面本身需要显示NavigationBar(例如Tab页,底部导航切换页),会导致两级头部导航栏。解决方式:针对A:如果当前父页面已经在NavigationPage关系下,则在子页面跳转时,不要添加“NavigationPage/”。针对B:以方式一的样式跳转,关键参数“useModalNavigation”为true。(方式二跳转后子页面会有导航栏)  6 隐藏状态栏/头部导航栏问题现象:由于登录页存在类似“忘记密码”“用户注册”等页面跳转操作,为了让子页面显示时有头部导航标题及返回按钮(图标),所以在跳转至登录页的地方添加“NavigationPage/”,导致登录页头部出现导航栏,实际登录页并不需要显示导航栏。问题原因:跳转至登录页的地方添加了“NavigationPage/”。解决方式:到登录页的.xaml.cs文件下添加下方代码,用于隐藏头部导航栏。NavigationPage.SetHasNavigationBar(this, false); 7 使用UserDialogs框架提示空指针问题现象:在项目共有文件程序中调用UserDialogs.Instance.XXX提示空指针。且类型定义中只有一个方法。 问题原因:UserDialogs未实例化。解决方式:在不同版本(安卓、IOS等)程序的活动中进行实例化操作。下图以安卓为例:  8 调用Picker不显示数据内容问题现象:数据集合已经成功获取,并且数据绑定无误,但是实际运行时,不显示数据列表。问题原因:定义的数据集合为List 、IList时,控件Picker不识别。解决方式:将数据集合类型定义为ObservableCollection。 9 根据状态动态显示标签内容     根据具体的值,动态显示内容,类似多分支选择语句,以下以Label标签的IsEnabled属性作为判断条件,(也可用Label标签的Text属性判断,具体依情况而定)<Label Text="" IsEnabled="{Binding IsPaid}" Style="{StaticResource LabelDefault}"><Label.Triggers><Trigger TargetType="Label" Property="IsEnabled" Value="True"><Setter Property="TextColor" Value="Green" /><Setter Property="Text" Value="已付" /></Trigger><Trigger TargetType="Label" Property="IsEnabled" Value="False"><Setter Property="TextColor" Value="Red" /><Setter Property="Text" Value="未付" /></Trigger></Label.Triggers></Label> 10 头部导航栏(标题栏)不显示标题问题现象:在Tab切换页面时,头部导航栏只有背景色,没有标题,且已经确认给每个子页面指定了Title,并在.xaml布局中添加了标题绑定。问题原因:未显示标题的头部导航栏可能是属于父布局的NavigationBar,所以在子页面指定标题无效。解决方式:在Tab的.xaml.cs文件中重写OnCurrentPageChanged()方法,并添加以下语句,让标题显示为当前子页面的标题。(此处Tabpage页继承的是BottomBarPage)Title = CurrentPage?.Title; 11 页面跳转至登录页   问题现象:应用跳转至登录页后,再次登录,并重复以上步骤二至三次,点击系统返回键返回,会返回出多个登录页。   问题原因:从应用跳转至返回页时,用以下代码跳转:,这种方式跳转逻辑如下:   解决方式:页面跳转时,跳转路径前加上斜杠,           如“ await NavigationService.NavigateAsync("/NavigationPage/LoginPage", null, true);”12 网络请求接收JSON数据不成功   问题现象:网络请求接口返回数据正常,用JObject接收数据时为空。或者用Model接收失败。   问题原因:   解决方式:a、尽量使用Model模型来接收数据,且在模型定义中不能出现“virtual”关键字:                                 b、接口不能直接初始化实例:     13 列表数据不指定行高数据显示不完整问题现象:当不给ListView指定行高时,Item信息显示不完整,但是行高不确定是多少。 问题原因:未指定“HasUnevenRows”字段为true。这个字段能够让Item行高自适应内容的高度。解决方式:在布局中给ListView添加“HasUnevenRows”属性为True。14 获取中文首字母异常问题现象:获取中文首字母时,抛出如下异常信息:   问题原因:未集成中文包(IOS一般不会有这个问题)。解决方式:右键安卓项目,选择“属性”按钮,在“Android选项”栏目中选择“CJK”即可。   15 页面跳转传递参数异常问题现象:当页面之间通过NavigationParameters 进行参数传递时,参数解析失败。问题原因:参数过大,通常是直接将一个完整对象传递到另一个页面作为参数会导致次问题。解决方式:借助临时变量,去除参数中不必要的冗余字段值即可。
————————————————
版权声明:本文为CSDN博主「蓝泉」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37698386/article/details/79866141

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值