在本地更新解析用户信息,而无需在Android中注销并再次登录

在本地更新解析用户信息,而无需在Android中注销并再次登录,android,parse-platform,Android,Parse Platform,我有一个应用程序,使用解析作为后端服务器。存储用户信息,并可通过编辑配置文件活动进行更改。我遇到的问题是: 1.在解析服务器上正确更改信息。 2.除非我注销,然后重新登录,强制从解析中检索用户信息,否则应用程序上的信息不会得到更新。 3.我不想在用户每次更改信息时强制他们注销/登录。有没有办法以另一种方式刷新当前解析用户信息?是的,您可以通过几个选项来完成此操作。首先,您可以添加一个环绕主布局的窗口,用户可以向下滑动以刷新内容。这意味着您要重写的onRefresh方法,对要刷新的解析中的对象调用

我有一个应用程序,使用解析作为后端服务器。存储用户信息,并可通过编辑配置文件活动进行更改。我遇到的问题是:
1.在解析服务器上正确更改信息。 2.除非我注销,然后重新登录,强制从解析中检索用户信息,否则应用程序上的信息不会得到更新。
3.我不想在用户每次更改信息时强制他们注销/登录。有没有办法以另一种方式刷新当前解析用户信息?

是的,您可以通过几个选项来完成此操作。首先,您可以添加一个环绕主布局的窗口,用户可以向下滑动以刷新内容。这意味着您要重写的onRefresh方法,对要刷新的解析中的对象调用fetch(),并更新UI(如果是ListView/RecyclerView/etc,则为notifyDatasetChanged)

另一个选项是,您可以在用户界面的某个地方提供一个刷新按钮,最有可能是Actionbar。这与SwipeRefreshLayout的过程相同,但您可以将其右键设置为click侦听器,以从SwipeRefreshLayout调用在onRefresh方法中定义的类似方法

记住在异步线程中执行ParseObject获取调用,成功获取后更新UI。您正在通过“编辑配置文件”活动更改有关解析的信息,当您注销/重新登录时,它会在服务器上更新并修复,因为您重新登录时只是再次获取所有内容

由于您在一个活动中更新信息并返回到另一个活动,因此您可以通过意图传递信息,以便将更新返回到您的用户界面(同时使用此信息更新后端)。您可以使EditProfileActivity通过来自MainActivity的Intent调用,然后通过Bundle和Intent将信息传递回。举例如下:

Intent intent = new Intent();
Bundle extras = new Bundle();
extras.putString("name", nameEdit.getText().toString());
extras.putString("email", emailEdit.getText().toString());
intent.putExtras(extras);
setResult(RESULT_OK, intent); //Assuming edit went okay
finish();  
然后在你的主要活动中:

 protected void onActivityResult(int requestCode, int resultCode,
         Intent data) {
      if(resultCode == RESULT_OK && data != null){
           Bundle extras = data.getExtras();
           //Deal with getting extras here
      }
 }

上面的解决方案假设您知道每次传递的额外信息,并且可能不是首选,因为用户的可能会或可能不会实际编辑所有字段,或者所有字段可能都有太多信息无法传递。在这种情况下,fetch()将是一个很好的选择。

我正确地从Parse和Intent extras获取了信息。我遇到的问题是应用程序上的本地用户。我能找到这个问题。不是查询,而是当前解析用户。如果我对用户的数据进行了更改,则在调用getCurrentUser()之前它不会在本地反映。fetch()我想这会强制刷新应用程序上的本地用户。现在似乎工作正常了!