我在按下操作栏按钮时尝试注销当前用户。这是我使用的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_logout) {
ParseUser.logOutInBackground(new LogOutCallback() {
public void done(ParseException e) {
if (e == null) {
ParseUser currentUser = ParseUser.getCurrentUser();
if (currentUser == null) {
Intent intent = new Intent(WelcomeActivity.this, DispatchActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} else {
Toast.makeText(WelcomeActivity.this, "Still logged in.", Toast.LENGTH_LONG)
.show();
}
} else {
Toast.makeText(WelcomeActivity.this, "Error msg:" + e, Toast.LENGTH_LONG)
.show();
}
}
});
return true;
}
return super.onOptionsItemSelected(item);
}
问题是,当我按下按钮时,我收到消息:Still logged in.
。这意味着调用了ParseUser.logOut
,但ParseUser.getCurrentUser()
未设置为null。我没有在Logcat中收到关于Parse的任何消息。
我需要currentUser为null的原因是因为我使用这段代码来检查是否有用户缓存:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Check if there is current user info
if (ParseUser.getCurrentUser() != null) {
// Start an intent for the logged in activity
startActivity(new Intent(this, WelcomeActivity.class));
} else {
// Start and intent for the logged out activity
startActivity(new Intent(this, MainActivity.class));
}
}
为什么在调用ParseUser.getCurrentUser()
时没有ParseUser.logOut
设置为空?我的问题还有另一个解决方案吗?
我使用的是Parse版本1.10.3。
编辑:
要将Parse初始化为我的项目,我使用名为ParseApplication.java
的应用程序文件。
public class ParseApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
Parse.enableLocalDatastore(this);
Parse.initialize(this, "1IwScbCSI157HcqFWCyR3qF8pqqGfNwPDoXnjyAd", "yIyVXPLM8h7V0ISGL3IxPaIqoUisK4w26EkWzs2W");
ParseACL defaultACL = new ParseACL();
ParseACL.setDefaultACL(defaultACL, true);
}
}
.java文件在我的AndroidManifest.xml
<application
android:name=".ParseApplication"
android:allowBackup="true"
android:icon="@mipmap/app_logo"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.parse.APPLICATION_ID"
android:value="@string/parse_app_id" />
<meta-data
android:name="com.parse.CLIENT_KEY"
android:value="@string/parse_client_key" />
EDIT2:
我对我的项目进行了一些研究,发现我在另一个.java文件中意外地声明了Parse.enableLocalDatastore(this);
。我从我的文件中删除了它,现在它就像一个魅力。这是导致我的应用程序崩溃的问题。
答案 0 :(得分:0)
您是否在应用程序中将ParseUser子类化?如果是,那就试试那个班级。此外,如果您启用了自动用户创建,则注销和获取用户将返回匿名用户。默认情况下处于启用状态。
希望这可以帮助你。