我在MapsActivity中有一个Google地图,带有3个可点击的按钮。每个按钮在地图上显示不同的标记。
这是通过以下方式实现的:
public void AllMap(View v) //first button
{
SharedPreferences mypref = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor prefsEditr = mypref.edit();
prefsEditr.putInt("mapselect", 1);
prefsEditr.apply();
finish();
Button button = findViewById(R.id.allmap);
button.setCompoundDrawablesWithIntrinsicBounds( 0, R.drawable.allmapon, 0, 0);
button.setTextColor(Color.parseColor("#ff5722"));
startActivity(getIntent());
}
然后在“地图设置”中,我读取了SharedPreferences,然后根据所选选项在地图上添加了标记。
这工作正常,但是在我单击后,整个活动将重新加载,但看起来像是从右到左的幻灯片动画。因此,新的重新加载活动来自设备的右侧。
我没有动画或类似设置,但是这似乎是我在设备上进行的所有活动的默认行为。但是,在MapsActivity中看起来不是很好。有没有一种方法可以刷新MapsActivity而无需重新启动它-只是标记会改变?
我应该怎么称呼而不是finish(); startActivity(getIntent());
?
答案 0 :(得分:2)
我应该怎么称呼而不是finish(); startActivity(getIntent());刷新地图?
您可以通过调用mMap.clear()
清除所有现有标记,然后根据新的共享首选项值再次添加标记。
或
您可以将标记的引用保留在叙述列表中,以便更改其在地图中的位置