清除活动导航返回堆栈

时间:2017-07-21 14:30:21

标签: android activity-stack

我正在尝试在我的应用中实现阻止功能。 只有一个活动允许用户阻止其他活动。 但是,可以使用4种不同的流程访问此活动。

用例:

当用户被阻止时,需要清除后台堆栈,并且应该将用户重定向到启动流程的屏幕。

由于我不知道用户使用哪个流来访问配置文件屏幕,因此我无法使用Intent显式启动任何活动。

请建议一种方式。

修改

添加导航流程。

流程1:

  

主屏幕 - >标签1(包含元素列表) - >元素详细信息屏幕 - >阻止屏幕。

流程2:

  

主屏幕 - >标签1(包含元素列表) - >元素详细信息屏幕 - >相互连接屏幕 - >阻止屏幕。

流程3:

  

主屏幕 - >连接屏幕列表 - >连接细节屏幕 - >阻止屏幕。

流程4:

  

HomeScreen - >标签3 - >从朋友那里找到 - >阻止屏幕

3 个答案:

答案 0 :(得分:1)

更新

在你的各种" root"活动,可能在tinyMCE.triggerSave();更新onResume()商店,其中包含一些值,用于标识用户看到的最近根活动就是这个。

SharedPreferences

在你的"块"活动,当它关闭活动时,请读取此值。

@Override
protected void onResume() {
    super.onResume();

    SharedPreferences preferences = getSharedPreferences("NAME_PREFERENCES", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("KEY_ACTIVITY", someIdentifyingKey);
    editor.apply();
}

如果您只是在活动上致电private void goBackToRoot() { SharedPreferences preferences = getSharedPreferences("NAME_PREFERENCES", Context.MODE_PRIVATE); String identifier = preferences.getString("KEY_ACTIVITY", null); Class<? extends Activity> rootActivity = /* choose the correct activity class based on `identifier` */; Intent intent = new Intent(this, rootActivity); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); } ,则该用户将返回之前的活动。无需创建finish()即可返回。

答案 1 :(得分:0)

我认为你在阻止屏幕上需要清除所有后挡板并重新启动主屏幕。实现这一目标的简单方法是使用Intent。

Intent intent = new Intent(context, HomeScreen.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK
                | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
((Activity) context).finish();

答案 2 :(得分:0)

我创建了一个中央广播接收器。每当成功完成块时,广播被发送到CentralBroadcastReceiver,接收器然后发送被阻止的动作类型的广播。活动和片段被注册到该接收器,然后在它们各自的屏幕上他们按照他们想要的方式处理广播,例如。在某些屏幕上,我想要一个自动服务器调用,所以一些活动应该执行网络呼叫,一些活动应该自己完成

相关问题