如何导航回以前的活动?

时间:2018-03-20 06:56:16

标签: android android-intent android-activity

我想要做的是,两个活动不可能同时运行。所以我在我的适配器类中使用这个方法。

Intent intent = new Intent().setClass(v.getContext(), WinnerDetailActivity.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                        v.getContext().startActivity(intent);
((Activity)context).finish();

但是当我点击后退按钮时,它不会转到后面的活动。

我做错了什么?

9 个答案:

答案 0 :(得分:2)

基本上,您应该从代码中删除finish()方法,以便它不会破坏该活动并将其保留在堆栈中。

致电finish()后,您无法返回之前的活动。 This question详细说明了调用finish()方法时会发生什么。

答案 1 :(得分:1)

删除代码中的((Activity)context).finish();

,因为 在这里完成您的活动,这意味着当您按下时,您的堆栈中没有任何活动可以返回。

Finish()方法会破坏当前活动。如果您不想在用户按下后退按钮时反复加载此活动,则可以使用此方法。基本上它会清除当前堆栈中的活动。 所以,不需要在这里使用 finish()

答案 2 :(得分:0)

只需删除此行:

((Activity)context).finish();

答案 3 :(得分:0)

点击按钮时调用Finish方法。

finish()让系统知道程序员想要完成当前的Activity。

((Activity)context).finish();

答案 4 :(得分:0)

那是因为你正在完成你的活动,这意味着当你按下回来时,你的堆栈上没有任何活动可以返回。

所以只需删除完成,这样我就可以在当前活动的基础上推送WinnerDetailActivity,在WinnerDetailActivity背面,它将打开您当前的活动。

Intent intent = new Intent().setClass(v.getContext(), WinnerDetailActivity.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                        v.getContext().startActivity(intent);

还阅读了FLAG_ACTIVITY_SINGLE_TOP

  

如果设置,则如果活动已在运行,则不会启动该活动   历史堆栈的顶部。

答案 5 :(得分:0)

//Here intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); will alway remain in intent stack unless you finish it and once this activity is resume.. then it will act as the stack has only on Activity running...
//So just remove ((Activity)context).finish();
Intent intent = new Intent().setClass(v.getContext(), WinnerDetailActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                    v.getContext().startActivity(intent);
((Activity)context).finish();

答案 6 :(得分:0)

There is two way to resolve this

1.Just remove ((Activity)context).finish(); because Finish() method will destroy the current activity.

2.Just Add below method in your class

 public void onBackPressed() {
        super.onBackPressed();
        startActivity(new Intent(CurrentActivity.this,DestinationActivity.class));

    }
DestinationActivity means Activity where you want to move.

答案 7 :(得分:0)

这可以通过两种方式完成: 方法1: 每当您从活动中说明新活动时,请确保不要致电if case .TransactionError(let msg) = callback { print(msg) } else { // No error } 。调用finish()将破坏堆栈中的Previous活动。 下一个方法是覆盖finish(),通过这样做,您可以导航到所需的活动。

onBackPressed()

答案 8 :(得分:0)

OnBack Pressed Method用于返回上一个活动, super.onBackPressed()用于导航到之前没有super.onBackpress的活动,因此无法遍历以前的活动。

mvn clean package; java -jar target\project-name-version.jar