我正在开发一个登录应用程序,它使用 Xamarin Android (C#) 中的共享首选项保存用户名和密码。首先,我从 Web 服务获取用户名和密码值,然后检查该值。如果在我的本地数据库(sqlite)中没有该值,我将使用来自 Web 服务的最新数据更新数据。之后,我使用我的自定义 sqlite 函数存储用户 ID,以获取带有用户名和密码的用户 ID。
到目前为止,我可以从我的 Web 服务中解析 Json 对象并将它们分配给变量。但是,我发现了一些奇怪的事情,我解析的 json 对象项无法保存在我的共享首选项中。我已经在互联网上搜索和研究了 3 天,但我没有找到任何东西。我几乎放弃了,伙计们。你愿意帮助我吗?我会很感激帮助。
这是我对我的应用程序所做的。
我制作了实用程序文件夹来保存我的必需品课程。我现在创建了保存用户属性的LoginSession类。
在我的主要活动中
private void MyBtnLogin(object aSender, System.EventArgs e)
{
try
{
System.Net.Http.HttpClient client= new System.Net.Http.HttpClient();
System.Threading.Tasks.Task.Run(async () =>
{
string response = await _httpClient.GetStringAsync($"http://yourjson.com/{fix_email_value}");
JObject parsedObject = JObject.Parse(response);
int userID = parsedObject .Value<int>("ID");
string userEmail = _parsedResponseObject.Value<string>("Email");
string userPassword = _parsedResponseObject.Value<string>("Password");
List<User> lists= User.GetUserList(userID);
User updatedvalue= (from a in lists where a.Email == userEmail && a.Password == userPassword select a).FirstOrDefault();
if (updatedvalue== null)
{
updatedvalue= new User();
updatedvalue.ID = userID;
updatedvalue.Email = userEmail;
updatedvalue.Password = userPassword;
updatedvalue.StoreOrChange();
RunOnUiThread(() =>
{
SharedPref.UserIDNow= userID;
LoginSession.UserNow= User.GetID(userID);
});
} }
});
StartActivity(typeof(NextPage));
Finish();
}
我在下一个活动中检索值,SharedPref.UserIDNow用于检索用户 ID。我把SharedPref.UserIDNow我的静态函数放在里面来获取当前的用户 ID
我错过了什么?每次我启动并登录时,登录后应用程序都会像注销一样关闭!并且值返回-22。顺便说一句,-22 是我共享偏好的默认值。我认为它必须是用户的ID。请帮我 :(