【问题标题】:Android MapsActivity - onclick reload activityAndroid MapsActivity - onclick 重新加载活动
【发布时间】:2018-08-01 18:56:01
【问题描述】:

我在 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());

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    我应该调用什么来代替finish();开始活动(getIntent());刷新地图?

    您可以通过调用mMap.clear() 清除所有现有标记,然后根据新的共享首选项值再次添加标记。

    或者

    您可以将标记的引用保存在 arralist 或其他内容中,以便您可以更改它们在地图中的位置

    【讨论】:

    • 不是一个坏主意,但我认为我找到了使用 finish(); 最简单的解决方案; overridePendingTransition(0, 0);开始活动(getIntent()); overridePendingTransition(0, 0);这会删除从右到左的动画,并且地图只会重新加载新的标记。正是我想要的。
    • @wotan 这只是删除了活动娱乐的动画,重新加载所有内容(活动创建、对象创建如偏好等)、加载地图需要时间和资源,所以在某些时候你必须改进效率(除非它是一个爱好项目或其他东西:P),other option to kill animation,很高兴为您提供帮助
    • 非常感谢您的解释。在那种情况下,我用 mMap.clear(); 尝试了你的建议;然后我调用 SetupMap();。我很惊讶,因为它工作得非常快!标记会立即被替换,而无需重新启动整个活动。非常感谢@Pavneet_Singh 帮助我。你是个好人!
    • 谢谢,我很高兴能帮上忙,请注意,确保我们没有调用 map.async 等,因为我们已经设置了地图,只需要再次添加标记,编码愉快!
    猜你喜欢
    • 2011-03-04
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多