我正在试图关闭一个从我自己的活动中打开的活动。我认为完成活动是更好的方式,但它不起作用。这是我打开动画的代码。 (与第三方包一起使用,这可能是问题?)
Intent calendar = new Intent();
calendar.setPackage("com.digibites.calendar");
if (calendar.resolveActivity(getPackageManager()) != null) {
startActivityForResult(calendar, REQUEST_CALENDAR);
CURRENT_ACTIVITY = REQUEST_CALENDAR;
}
我在启动之后关闭了活动:
finishActivity(CURRENT_ACTIVITY);
¿有什么想法吗?谢谢!我一直在尝试这2天,它让我很紧张。我已经在论坛上提出了关于此的所有问题。
编辑:当我开始激活我呼叫第三部分包以显示日历。当用户想要时,通过按下按钮关闭日历。 finishActivity是按钮的方法。如果我呼叫完成,则关闭我的应用程序活动,而不是日历活动。
答案 0 :(得分:0)
首次使用finishActivity(requestcode);
然后使用finish();
答案 1 :(得分:0)
finishActivity(...)用于与您可能认为不同的事情。它的意思是当您想要从启动它的活动中完成产生结果的活动时。它的直观性很强,但是文档对此很清楚:
https://developer.android.com/reference/android/app/Activity#finishActivity(int)
在这种情况下,您需要做的是:
只需在您要求结果的活动中在setResult(...,...)之后使用finish()。
val intent = Intent()
intent.putExtras(yourResultsBundle)
setResult(Activity.RESULT_OK, intent)
finish()
答案 2 :(得分:-1)
在调用日历意图后添加finish();
。
Intent calendar = new Intent();
calendar.setPackage("com.digibites.calendar");
if (calendar.resolveActivity(getPackageManager()) != null) {
startActivity(calendar);
finish();
}
答案 3 :(得分:-1)
你可以使用finish();而不是finishActivity(CURRENT_ACTIVITY);
答案 4 :(得分:-1)
finishActivity
方法仅设置响应代码,因此您必须在调用finish()
后调用finishActivity(CURRENT_ACTIVITY)
才能完成活动。并且不要忘记在完成之前调用setResult(RESULT_OK, getIntent())
(如果您的活动成功发送结果)。
换句话说,如果您只是致电finishActivity
,而您只是设置结果代码,那么您不会关闭活动...为了实际关闭活动,您必须致电finish
在finishActivity
之后。
所以完成活动的代码应该是这样的:
// ...
finishActivity(CURRENT_ACTIVITY);
setResult(RESULT_OK, getIntent());
finish();
// ...