我在MapsActivity中有一个带有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());
?
我应该调用什么而不是finish((;startActivity(getIntent(((;刷新地图?
您可以通过调用mMap.clear()
清除所有现有标记,并根据新的共享首选项值再次添加标记。
或
你可以将你的标记的引用保存在arraylist或其他东西中,这样你就可以在地图中更改它们的位置