Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
活动中的Android finish函数';行不通_Android_Android Activity_Activity Finish - Fatal编程技术网

活动中的Android finish函数';行不通

活动中的Android finish函数';行不通,android,android-activity,activity-finish,Android,Android Activity,Activity Finish,我从MainActivity扩展了activity A、B、C。 A先起动,A起动B和B起动C。 当我在活动C的onclick特殊按钮中使用finish()时,活动A是开始,但我希望活动B开始。 我该怎么办 当活动C完成时,您不能可靠地期望活动B在堆栈上,因为如果后台活动需要内存,Android可以销毁它。如果您的用例建议在活动C关闭时活动B应该始终可见,那么您应该明确地启动它,如中所述。在您的情况下,我认为在onBackPressed()中使用NavUtils.navigateUpFromSa

我从MainActivity扩展了activity A、B、C。 A先起动,A起动B和B起动C。 当我在活动C的onclick特殊按钮中使用finish()时,活动A是开始,但我希望活动B开始。
我该怎么办

当活动C完成时,您不能可靠地期望活动B在堆栈上,因为如果后台活动需要内存,Android可以销毁它。如果您的用例建议在活动C关闭时活动B应该始终可见,那么您应该明确地启动它,如中所述。在您的情况下,我认为在
onBackPressed()
中使用
NavUtils.navigateUpFromSameTask(this)
是合适的

aaActivity.java

BActivity.java

CActivity.java


启动所有活动,如下所示:

Intent i = new Intent(this,NewActivity.class);

startActivity(i);

不要添加finish()方法,然后在按钮内部单击callfinish()方法。它将使您回到上一个活动。

检查您正在使用的意图过滤器,并检查与之关联的AndroidManifest中的noHistory xml属性activities@Shubham我没有使用noHistory,我检查它在这段代码中B可能从A和其他活动开始,没有固定的父项您必须为C指定父项,不适用于B。我忘了说C活动开始D活动,在C和D中,当我使用finish函数时,一个活动开始。这个想法是,当下一个活动完成时,您不应该期望任何前一个活动保留在任务中。在设计应用程序时要考虑到这一点。
Intent i = new Intent(this,CActivity.class);
startActivity(i);
Intent i = new Intent(this,BActivity.class);
startActivity(i);
finish();
Intent i = new Intent(this,NewActivity.class);

startActivity(i);