Java 清除活动意图上的导航堆栈

Java 清除活动意图上的导航堆栈,java,android,Java,Android,我在应用程序开始时有一个登录视图。此视图中的登录将手动完成(即在代码中调用finish())。这样,当用户想要退出应用程序时,就不必在登录页面上按下后退按钮 现在我想在应用程序中有一个注销按钮。这将调用登录视图(旨在删除任何以前存储的登录凭据,即模拟注销) 我需要做的是清除这个目的上的向后导航堆栈,否则用户仍然能够按back键查看他们最初导航的应用程序 现在,Intent.FLAG\u ACTIVITY\u CLEAR\u TOP不起作用,我想是因为我finish()登录活动意味着该活动不在后台

我在应用程序开始时有一个登录视图。此视图中的登录将手动完成(即在代码中调用
finish()
)。这样,当用户想要退出应用程序时,就不必在登录页面上按下后退按钮

现在我想在应用程序中有一个
注销
按钮。这将调用登录视图(旨在删除任何以前存储的登录凭据,即模拟注销)

我需要做的是清除这个目的上的向后导航堆栈,否则用户仍然能够按back键查看他们最初导航的应用程序

现在,
Intent.FLAG\u ACTIVITY\u CLEAR\u TOP
不起作用,我想是因为我
finish()
登录活动意味着该活动不在后台堆栈中。我还使用了
Intent.FLAG\u ACTIVITY\u NEW\u TASK
,它似乎也不起作用。用户仍然可以按“后退”按钮,并在应登录才能访问的活动中向后导航

因此,我需要做的是创建登录活动的实例,并使其成为我的应用程序的新
root
活动

我该怎么做


谢谢

您应该将登录状态保存到本地数据存储(您可以使用SharedReferences、应用程序类或DB)

然后,在活动的onStart()方法中,您应该检查登录状态,并向用户显示相应的UI

换句话说,跟踪应用程序中某个位置的登录状态,然后在每次显示活动时检查该状态,以确定是否应显示登录视图


无论活动的入口点是什么,您都可以控制向用户显示的内容。

您应该将登录状态保存到本地数据存储(您可以使用SharedReferences、应用程序类或DB)

然后,在活动的onStart()方法中,您应该检查登录状态,并向用户显示相应的UI

换句话说,跟踪应用程序中某个位置的登录状态,然后在每次显示活动时检查该状态,以确定是否应显示登录视图

无论活动的入口点是什么,您都可以控制向用户显示的内容。

试试看

Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
这是一个对我来说很好的应用程序

homeButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

            Intent intent = new Intent( _context, MainMenuActivity.class );
            intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            _context.startActivity( intent );

            finish();       

            overridePendingTransition(R.anim.slide_right,R.anim.slide_right);
    }
});
试一试

这是一个对我来说很好的应用程序

homeButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

            Intent intent = new Intent( _context, MainMenuActivity.class );
            intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            _context.startActivity( intent );

            finish();       

            overridePendingTransition(R.anim.slide_right,R.anim.slide_right);
    }
});

是的,这是个好主意。我将期待着在未来实现这一目标。不过,就目前而言,我将努力找到自己的工作方式。:)是的,这是个好主意。我将期待着在未来实现这一目标。不过,就目前而言,我将努力找到自己的工作方式。:)