我有一个MainActivity
类,它会在某个时刻启动RaceActivity
。如果稍后RaceActivity
退出,我希望MainActivity
返回其所有视图。但是,它似乎每次都重新创建。我已经实现了onOptionsItemSelected
的正确部分,但是当我单击后退按钮时,我每次都会获得一个新实例,或者至少以编程方式添加的视图已经消失。我该怎么做才能解决这个问题?
编辑以澄清:
我可以使用onCreate和bundle来恢复这些视图,但我认为如果你重新创建一个对象的同一个实例就会自动发生。我想在重新创建活动时保持以编程方式创建的视图。或者,我希望活动在用户返回时停止销毁。 (我测试了,一旦使用返回就会被破坏。)
答案 0 :(得分:0)
如果有帮助,请接受我的回答。找到解决方案需要几个小时..
覆盖onBackPressed()
Intent intent = new Intent(FromAnyActivity.this, CurrentActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
并在其中插入代码..它将从堆栈重新排序您的Activity,您的视图和数据将保持原样。通过添加SingleInstance launch模式还有另一种方法..阅读这些link可能有所帮助..
答案 1 :(得分:-2)
将以下内容添加到AndroidManifest文件中的MainActivity声明:
android:launchMode="singleTask"
根据Android API,此添加用于:“系统在新任务的根目录创建活动并将意图路由到该任务。但是,如果活动的实例已存在,则系统路由意图通过调用onNewIntent()方法到现有实例,而不是创建一个新实例。“
如果上述方法不起作用,我相信您也可以尝试将其添加到AndroidManifest文件中的MainActivity中:
android:alwaysRetainTaskState="true"
根据Android API,此添加用于:“活动所在的任务的状态是否始终由系统维护 - 如果是,则为”true“,如果是,则为”false“在某些情况下,系统允许将任务重置为初始状态。默认值为“false”。该属性仅对任务的根活动有意义;对于所有其他活动,它都被忽略。“