Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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 不同意图对象的同一活动的多个实例_Android_Android Intent - Fatal编程技术网

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设置为“完美”!正是我想要的。谢谢!人们并不总是认为旧的活动仍然存在。有时,活动会保持不变,因为通知会出现,并进入主页。从那里我选择了另一个城市,然后这两个城市的城市活动在堆栈中。你还有别的建议吗?