我想要做的是,两个活动不可能同时运行。所以我在我的适配器类中使用这个方法。
Intent intent = new Intent().setClass(v.getContext(), WinnerDetailActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
v.getContext().startActivity(intent);
((Activity)context).finish();
但是当我点击后退按钮时,它不会转到后面的活动。
我做错了什么?
答案 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);
如果设置,则如果活动已在运行,则不会启动该活动 历史堆栈的顶部。
答案 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