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

时间:2015-06-02 20:27:26

标签: android parse-platform

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

1 个答案:

答案 0 :(得分:0)

是的,你可以通过几个选项来做到这一点。首先,您可以添加一个SwipeRefreshLayout,它可以围绕主要布局,用户可以向下滑动以刷新内容。这意味着你覆盖OnRefreshListener的onRefresh方法,从你想要刷新的Parse上调用对象的fetch(),并更新UI(ListView / RecyclerView / etc的notifyDatasetChanged)。

另一种选择,您可以在用户界面的某处提供刷新按钮,很可能是Actionbar。这与SwipeRefreshLayout的过程相同,但你正确使它成为一个点击监听器,而是调用你在SwipeRefreshLayout中onRefresh方法中定义的类似方法。

记住在AsyncThread中执行ParseObject fetch调用,并在成功获取后更新UI。您正在通过编辑配置文件活动更改Parse的信息,并在您注销/重新登录时更新服务器并进行修复,因为您只是在重新登录时再次获取所有内容。

由于您正在更新一个Activity中的信息并返回另一个Activity,因此您可以通过Intent传递信息以将更新返回到您的用户界面(同时使用此信息更新后端)。您可以通过MainActivity中的startActivityForResult通过Intent调用EditProfileActivity,然后通过Bundle和Intent传回信息。 Ex下面:

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();  

然后在你的MainActivity中:

 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()将是一个不错的选择。