我的应用中有两个流程。
流量1:
启动画面 - >活动A - >活动B - >活动C - >活动A
流程2:
启动画面 - >活动C - >活动A
解释上述内容;在流程1 中,用户看到启动画面,进入主屏幕,进入登录屏幕并成功登录,进入主屏幕。如果用户从主屏幕点击退出,则会将其重定向到主屏幕。
在流程2 中,用户是旧用户,他看到启动画面并直接看到主屏幕。如果他退出,他应该被引导到主屏幕。
我面临的问题是,在流程1中,一切都按预期工作。但是在流程2中,在注销(活动C)之后,主屏幕(活动A)没有打开。意图不起作用。
点击退出:
@Override
public void onClick(View v) {
((StudyStoryMain)getActivity()).logoutUser();
}
方法:
public void logoutUser() {
//Problem: the intent is getting called in case the user creates an account. But, if the user is already an existing user, the intent is nit working
ParseUser.getCurrentUser();
ParseUser.logOut();
Intent i = new Intent(StudyStoryMain.this, HomeActivity.class);
//logic to fix logout
// i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
finish();
startActivity(i);
}
为什么Intent在两个流程中都不起作用?
答案 0 :(得分:1)
尝试这种方式:
Intent intent = new Intent(StudyStoryMain.this, HomeActivity.Class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish(); // Call once you redirect to another activity
答案 1 :(得分:0)
在完成当前活动之前,启动另一项活动:
startActivity(i);
finish();
答案 2 :(得分:0)
在logoutUser()方法中,你在startActivity()之前调用finish(),这是错误的,因为startActivity(intent)get never call。 所以只需将序列更改为
startActivity(intent)
finish()
答案 3 :(得分:0)
@Override
public void onClick(View v) {
((StudyStoryMain)getActivity()).logoutUser();
finish();
}
方法:
public void logoutUser() {
ParseUser.getCurrentUser();
ParseUser.logOut();
Intent i = new Intent(StudyStoryMain.this, HomeActivity.class);
startActivity(i);
}
尝试这种方式,希望它能解决您的问题。