我正在为学校创建一个Android应用程序,让人们登录,为此我使用了Parse。
我的登录活动是这样的: - 第一个活动,学生输入电子邮件地址和passeword并重新输入passeword,当他按下按钮时,解析验证电子邮件,如果在第二个活动开始时登录是不安全的,则验证电子邮件。
- 第二个活动包含文本字段以完成profil(FirstName,LastName,Age ....)。
在Parse.com: 在Users类中,我添加了新列(FirstName,LastName,Age ...)
我的问题是,当用户完成profil并接受时,FirstName,LastName等的数据将添加到Parse.com的Users类中,以完成当前用户登录的行。
我已经在第二个活动SignInBackground中使用了但是因为它需要一个用户名(已经在第一个活动中输入了),我还使用了SaveInBackground和ParseObject,但它创建了一个新类。
答案 0 :(得分:0)
我假设您在第一个signUpInBackground(SignUpCallback callback)
中呼叫Activity
。
这是关于该方法的Parse文档:
public void signUpInBackground(SignUpCallback callback)
注册一个新用户。你应该为新的ParseUsers调用它而不是ParseObject.save()。这将在服务器上创建一个新的ParseUser,并将会话保留在磁盘上,以便您可以使用ParseUser.getCurrentUser()访问该用户。 在调用signUp之前必须设置用户名和密码。这比使用ParseUser.signUp()更好,除非您的代码已经从后台线程运行。
参数:
回调 - 当signUp完成时调用callback.done(user,e)。
因此,您可以看到,此方法注册用户使用Parse并登录用户,将该登录会话持久保存到磁盘。
因此,当您到达下一个Activity
时,您无需注册或登录。您只需从用户获取新值,然后访问当前用户(ParseUser.currentUser()
),以这样的方式将值添加到该对象:
ParseUser user = ParseUser.currentUser();
user.put("attribute1", "value1");
user.put("attribute2", "value2");
user.put("attribute3", "value3");
user.put("attribute4", "value4");
// And so on...
user.saveInBackground(); // You might want to implement a SaveCallback there
仅供参考: saveInBackground()
方法继承自ParseObject
。
答案 1 :(得分:0)
如果我正确理解您的问题,那么当您在活动2中调用saveInBackground时,您没有可用于用户名的数据。如果是这种情况,我认为最好的选择是将数据传递给您加载第二个活动时,在intent中需要(用户名等)。
要为意图添加用户名,您可以执行以下操作。
String usernameText = "";
Intent ii=new Intent(Activity1.this, Activity2.class);
ii.putExtra("username", usernameText);
startActivity(ii);
然后,要在活动2的OnCreate方法中检索用户名,您可以执行以下操作:
Intent iin= getIntent();
Bundle b = iin.getExtras();
if(b!=null)
{
String username =(String) b.get("username");
}
显然在我的解决方案中,我假设您将从EditText中检索用户名,但是没有将其放入我的代码中,因为我已经假设您已经知道如何执行此操作。同样在活动2中,一旦检索到用户名,您将需要将其存储为全局变量,以便在用户完成活动2上的表单填写后使用它。