xamarin android密码,Xamarin.Forms学习历程(七)——用户偏好设置存储
经常会遇到要存储一下用户账号密码之类的,让用户下次登录时不需要重新输入账号密码,直接进入主界面。Xamarin.Forms里没有自己的解决方案,还是得调用iOS和Android原生的API才可以实现。
在Xamarin.Forms里怎么实现呢,整体思路是将iOS和Android原生的API分装成一个公共的接口,然后让Xamarin调这个接口,若在Android端则去执行Android端的API,在iOS端则执行iOS端的代码。好了,下面我们看具体实现吧。
1、封装iOS端API##
以下代码在iOS项目里写,单独写成一个类
namespace XamarinJaguarFund.iOS
{
public class UserPreferencesiOS : IUserPreferences
{
public UserPreferencesiOS()
{
}
public void SetString(string key, string value)
{
NSUserDefaults.StandardUserDefaults.SetString(value,key);
}
public string GetString(string key)
{
return NSUserDefaults.StandardUserDefaults.StringForKey(key);
}
public void DeleteString(string key)
{
NSUserDefaults.StandardUserDefaults.RemoveObject(key);
}
}
}
然后设置AppDelegate.cs
namespace XamarinJaguarFund.iOS
{
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
OxyPlot.Xamarin.Forms.Platform.iOS.PlotViewRenderer.Init();
App.Init(new UserPreferencesiOS());
App myApp = new App();
LoadApplication(myApp);
return base.FinishedLaunching(app, options);
}
}
}
完成这两步,iOS部分就算封装完毕了。
2、封装Android端API##
以下代码在Android项目写,单独写个类。
namespace XamarinJaguarFund.Droid
{
public class UserPreferencesAndroid : IUserPreferences
{
public UserPreferencesAndroid()
{
}
public void SetString(string key, string value)
{
var prefs = Application.Context.GetSharedPreferences("MySharedPrefs", FileCreationMode.Private);
var prefsEditor = prefs.Edit();
prefsEditor.PutString(key, value);
prefsEditor.Commit();
}
public string GetString(string key)
{
var prefs = Application.Context.GetSharedPreferences("MySharedPrefs", FileCreationMode.Private);
return prefs.GetString(key,"");
}
public void DeleteString(string key)
{
var prefs = Application.Context.GetSharedPreferences("MySharedPrefs", FileCreationMode.Private);
prefs.Edit().Remove(key).Commit();
}
}
}
然后设置MainActivity.cs
namespace XamarinJaguarFund.Droid
{
[Activity(Label = "XamarinJaguarFund.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
App.Init(new UserPreferencesAndroid());
App myApp = new App();
LoadApplication(myApp);
}
}
}
完成这两步,Android部分就算封装完毕了。
3、公共部分设置##
在Xamarin项目里单独写个类
namespace XamarinJaguarFund
{
public interface IUserPreferences
{
void SetString(string key, string value);
string GetString(string key);
void DeleteString(string key);
}
}
在app.cs初始化以下
public partial class App : Application
{
public static IUserPreferences UserPreferences { get; private set; }
public static void Init(IUserPreferences userPreferencesImpl)
{
App.UserPreferences = userPreferencesImpl;
}
}
4、使用##
设置值
App.UserPreferences.SetString("token", userObject.token);
App.UserPreferences.SetString("displayName", userObject.displayName);
App.UserPreferences.SetString("username", userObject.username);
查询值
customerName.Text = App.UserPreferences.GetString("displayName");
displayName.Text = App.UserPreferences.GetString("username");
删除值
App.UserPreferences.DeleteString("token"); App.UserPreferences.DeleteString("displayName");
App.UserPreferences.DeleteString("username");
如果要修改某个值,只需使用设置值的方法,值会覆盖。
结语#
有点小复杂,不过理解其核心思想就可以理解了。如有错误之处还望大神给予指点。
xamarin android密码,Xamarin.Forms学习历程(七)——用户偏好设置存储相关推荐
- xamarin android 布局,Xamarin.Android 上中下布局
xml代码: xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_par ...
- Android学习笔记---16_采用SharedPreferences保存用户偏好设置参数
16_采用SharedPreferences保存用户偏好设置参数 Android学习笔记---16_采用SharedPreferences保存用户偏好设置参数 2013-03-08 16_采用Shar ...
- xamarin android tv,Xamarin TV Scripts
Introduction Do you like watching that old TV show so much that you want to take it with yourself wh ...
- xamarin android框架,Xamarin使用的架构
Xamarin使用的架构 What framework is used by Xamarin? Xamarin使用的架构? Solution 1解决方法1 Xamarin has "port ...
- xamarin android 书,xamarin android 开发
开始环境vs2017 直接创建android 项目,左边是android studio 的项目目录 右边是vs创建的android 项目目录 结构基本相同,有res对应的Resources文件 加载 ...
- xamarin android pdf,Xamarin.Android - 下载pdf和视频到应用空间并打开
1. 下载创建本地应用内文件时,创建模式必须为 FileCreationMode.WorldReadable Stream fos = OpenFileOutput(pdfName, FileCrea ...
- xamarin android 邮件,Xamarin Android:通过标准API(电子邮件,脸谱等)分享图像
我认为应用程序图标是在您的应用程序专用的目录中创建的,因此其他应用程序无法获取它. 您需要将其保存在其他应用程序可以访问的位置,然后从该位置共享它,如下所示: public void Share (s ...
- 我的iOS学习历程 - UISlider(简单的设置一组图片动画)
今天我们学习的是UISlider,就是平时看视频听音乐等的进度条的设置 今天设置的slider是控制播放一组图片速度的例子: 1.初始化以及设置一些属性 // 初始化UISlider *slider ...
- Java开发桌面程序学习(七)——ImageView设置图片以及jar包读取fxml文件
ImageView设置图片 JavaFx的ImageView,设置图片不能直接通过属性设置,只能通过代码来设置 ImageView设置图片 首先,我们让fxml对应的那个controller的java ...
最新文章
- TensorFlow被曝存在严重bug,搭配Keras可能丢失权重,用户反映一个月仍未修复
- Python3.5模块‘OS’‘sys’
- mac svn 可视化界面_svn for mac 操作
- python中使用rsa加密
- React的核心概念
- asp语言与php语言的差别,用什么语言进行网页开发最好.php与asp语言的区别
- python matplotlib.pyplot.xticks() yticks() (设置x或y轴对应显示的标签)
- 江西住建云实名认证怎么弄_王者荣耀无限时间怎么弄 2020年无限时间账号
- 整理了一份「生产管理数据分析」方案,解决90%的问题
- windows环境:dos 通过ftp连接到vsftpd 显示乱码解决方法
- 编写一个函数把华氏温度转换为摄氏温度
- python伪造邮件发件地址_Python:向多个地址发送电子邮件
- 中国“两高”发布司法解释 依法严惩涉地下钱庄犯罪
- XML XPATH simpleXML
- 知道cve编号怎么搜poc_想在海南买房不知道该怎么选?快来看看这些热搜楼盘吧!...
- python之路-基础篇-002
- Java关键字transient
- haneWIN Software NFS工具的使用
- 四川婚姻登记捷宇SC10T高拍仪技术规格说明书
- 行业解读 | 什么是人工智能语音技术?一篇文章让你读懂它
热门文章
- b关于bootstrap官网https://v4.bootcss.com/docs/layout/grid/关于栅格布局的学习和实践博客
- 介绍一款HCIA、HCIP、HCIE的刷题软件
- elementUI中的el-table标签介绍
- CVE-2020-17518 Apache Flink 上传路径遍历漏洞复现
- win7+thinkpad t400
- Python基础 3.4 HTTP协议和静态Web服务器
- 【通信】短波通信系统仿真含Matlab源码
- fairygui富文本html语法怎么用,文本-FairyGUI 教程-面试哥
- 数字货币,已成为理解现代经济不可排斥的一个因素
- SDTM--study data tabulation model implementation guide:human clinical trails(临床研究数据模型实施指南)3.4