finishActivity(int RequestCode)不起作用

时间:2016-06-09 11:43:39

标签: android android-activity

我正在试图关闭一个从我自己的活动中打开的活动。我认为完成活动是更好的方式,但它不起作用。这是我打开动画的代码。 (与第三方包一起使用,这可能是问题?)

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是按钮的方法。如果我呼叫完成,则关闭我的应用程序活动,而不是日历活动。

5 个答案:

答案 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,而您只是设置结果代码,那么您不会关闭活动...为了实际关闭活动,您必须致电finishfinishActivity之后。

所以完成活动的代码应该是这样的:

// ...
finishActivity(CURRENT_ACTIVITY);
setResult(RESULT_OK, getIntent());
finish();
// ...