意图不能按预期工作

时间:2014-11-17 06:28:57

标签: java android android-intent

我的应用中有两个流程。

流量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在两个流程中都不起作用?

4 个答案:

答案 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);
    }

尝试这种方式,希望它能解决您的问题。