笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述如何从Xamarin Android Activity中调用MvxViewModel?相关的知识,希望能为你提供帮助。
如何从我的xamarin android MvxViewModel
课程中调用Activity
?在我的情况下,我不能像local: MvxBind=" Click MethodFromMvxViewModel"
那样去MvxViewModel
。
所以我的情况是:
我有Facebook登录。在我的活动中,我尝试登录时有两个选项。如果用户通过他的Facebook帐户发送电子邮件,我会收到一些关于用户的信息,并希望将其保存到数据库中,如果用户没有Facebook帐户中的电子邮件,我会打开新的内容视图与表单填写电子邮件,然后按保存按钮,按下保存按钮后我需要将用户保存到数据库。
活动代码:
[Activity(Label = "Facebook login")]
class FacebookLoginView : MvxActivity, IFacebookCallback, GraphRequest.IGraphJSONObjectCallback
{
private LoginButton loginButton;
private ICallbackManager callbackManager;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
RequestWindowFeature(WindowFeatures.NoTitle);
SetContentView(Resource.Layout.FacebookLoginView);
loginButton = FindViewById<
LoginButton>
(Resource.Id.loginButton1);
loginButton.SetReadPermissions(new string[] { "user_friends", "email" });
callbackManager = CallbackManagerFactory.Create();
loginButton.RegisterCallback(callbackManager, this);
}protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
callbackManager.OnActivityResult(requestCode, (int)resultCode, data);
}public void OnCancel()
{
//Does nothing, just closes facebook login screen
}public void OnError(FacebookException error)
{
//For now does nothing
}public void OnSuccess(java.Lang.Object result)
{
var loginresult = result as LoginResult;
GraphRequest graphRequest = GraphRequest.NewMeRequest(loginresult.AccessToken, this);
graphRequest.Parameters.PutString("fields", "id,name,email");
graphRequest.ExecuteAsync();
SetContentView(Resource.Layout.SlideListView);
}public void OnCompleted(JSONObject @object, GraphResponse response)
{
var facebookId = (long)@object.Get("id");
var email = @object.Get("email").ToString();
if (string.IsNullOrEmpty(email))
{
SetContentView(Resource.Layout.CompleteRegistrationView);
//GetEmail from form
}
//save user
}
}
在最后一个方法
OnCompleted
我想打电话给MvxViewModel
并给他发电子邮件和facebookId。我怎样才能从Activity
那里做到这一点?答案【如何从Xamarin Android Activity中调用MvxViewModel()】如果您使用通用
MvxActivity<
MyViewModel>
,您将能够在ViewModel上调用任何方法。public void OnCompleted(JSONObject @object, GraphResponse response)
{
var facebookId = (long)@object.Get("id");
var email = @object.Get("email").ToString();
if (string.IsNullOrEmpty(email))
{
SetContentView(Resource.Layout.CompleteRegistrationView);
//GetEmail from form
}
//save user
ViewModel.SaveUserMethod(object);
}
推荐阅读
- android viewmodels之间的inter通信
- Google Apps脚本(表格形式数据处理,如果某些单元格为空,则删除行,同时维护某些列)
- 如何下载以前保存的Google Apps脚本修订版()
- Google App Script在doc中显示提示,但未使用电子表格权限
- 某些Google幻灯片AppScript是否已记录但不受支持()
- 我是否需要更改我的Apps脚本代码,因为Google+登录功能已被弃用()
- 来自GmailApp附件的DriveApp createFile无法正常工作
- Google Apps脚本 - 电子邮件库存通知()
- 从服务器响应(请求)返回HTML,好的还是不好的做法()