Android 不同意图对象的同一活动的多个实例
我的应用程序中有两个活动:-Android 不同意图对象的同一活动的多个实例,android,android-intent,Android,Android Intent,我的应用程序中有两个活动:- 主要活动:-显示城市列表 城市活动:-显示所选城市的详细信息。 问题是:- 如果我在MainActivity中选择一个城市“纽约”,它将带我到CityActivity并显示纽约的详细信息。 如果回去选择“旧金山”,那就带我去城市活动,展示旧金山的细节。 现在,当我按下手机的背面时,它会把我带到每个城市的活动“纽约”、“旧金山”,。。。和浏览器的后退按钮一样。 我尝试了多个选项来修复它,但对我没有帮助:- a、 )在CityActivity中调用finish()
主要活动:-显示城市列表
城市活动:-显示所选城市的详细信息。
问题是:- 如果我在MainActivity中选择一个城市“纽约”,它将带我到CityActivity并显示纽约的详细信息。
如果回去选择“旧金山”,那就带我去城市活动,展示旧金山的细节。
现在,当我按下手机的背面时,它会把我带到每个城市的活动“纽约”、“旧金山”,。。。和浏览器的后退按钮一样。
我尝试了多个选项来修复它,但对我没有帮助:-
a、 )在CityActivity中调用finish()。
b、 )在清单文件中添加android:launchMode=“singleInstance”。
我想在这里实现的是,如果带有纽约对象的CityActivity在内存中,并且我尝试选择“旧金山”城市,那么它应该销毁带有“纽约”意图对象的活动,并创建带有“旧金山”意图对象的新活动。
在城市详细信息活动中添加此项
@Override
public void onBackPressed() {
finish();
}
就这些
编辑2:
打开“详细信息”活动时,请这样称呼它
Intent i= new Intent(MainActivity.this,DetailsActivity.class);
i.putExtra("Name",Name);
....
startActivity(i);
finish()//add this
在“详细信息”活动中按back键时,请执行此操作
@Override
public void onBackPressed() {
Intent i= new Intent(DetailsActivity.this,MainActivity.class);
startActivity(i);//starting main activity
finish();
}
启动城市活动时设置意向标志“无历史记录”尝试过,部分有效。它确实会从堆栈中删除活动。但我只想在使用新城市对象启动活动时将其删除,否则将显示旧城市对象。尝试将意向标志设置为“活动”\u“重新排序”\u设置为“完美”!正是我想要的。谢谢!人们并不总是认为旧的活动仍然存在。有时,活动会保持不变,因为通知会出现,并进入主页。从那里我选择了另一个城市,然后这两个城市的城市活动在堆栈中。你还有别的建议吗?