我不知道描述这个的确切词汇,但我的情况是这样的: 在我的应用程序中,我给用户选择他们想要在谷歌地图中显示哪些城市,比如有4个选项,用户点击其中两个。这是我的倾听方法。
public void onClick(View v) {
CheckBox option;
int id = 1;
while ((option = (CheckBox) thisActivity.findViewById(id)) != null) {
if (option.isChecked()) {
selected = selected + option.getText().toString() + ";";
}
id++;
}
Intent newintent = new Intent(thisActivity, ShowInMap.class);
newintent.putExtra("SelectedCity", selected);
// newintent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
thisActivity.startActivity(newintent);
}
我可以在地图上成功显示这两个选定的城市,但是当我点击后退键并选择另一个城市时,之前显示的城市仍然在地图上加上我这次选择的任何城市,而我的Log说实际上这三个城市被发送到地图API。所以我的问题是,有没有办法清理这两个选定的城市并做一个全新的选择。即只有我第二次选择的城市才在地图上。先感谢您。
答案 0 :(得分:0)
似乎变量selected
是全局变量,因此当您返回第一个活动以选择城市时,新选定的城市将附加到旧的selected
字符串。
我建议您每次开始新选择之前先清除selected
字符串。
public void onClick(View v) {
selected="";//clear it
CheckBox option;
int id = 1;
while ((option = (CheckBox) thisActivity.findViewById(id)) != null) {
if (option.isChecked()) {
selected = selected + option.getText().toString() + ";";
}
id++;
}
Intent newintent = new Intent(thisActivity, ShowInMap.class);
newintent.putExtra("SelectedCity", selected);
// newintent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
thisActivity.startActivity(newintent);
}