Android 重新加载映射活动不会再次显示标记
我正在创建非常简单的应用程序,并尝试学习android 在这个应用程序中,我创建了一个包含地图的活动,它还有一个选项菜单,单击选项菜单项打开另一个活动并关闭当前地图。这是代码Android 重新加载映射活动不会再次显示标记,android,google-maps,google-maps-api-2,Android,Google Maps,Google Maps Api 2,我正在创建非常简单的应用程序,并尝试学习android 在这个应用程序中,我创建了一个包含地图的活动,它还有一个选项菜单,单击选项菜单项打开另一个活动并关闭当前地图。这是代码 @Override public boolean onOptionsItemSelected(MenuItem item) { Intent intent = new Intent(); if (item.getItemId() == R.id.LegalNotice) { intent.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent = new Intent();
if (item.getItemId() == R.id.LegalNotice) {
intent.setClass(Map.this, LegalNotices.class);
} else if (item.getItemId() == R.id.ChangeDistance) {
intent.setClass(Map.this, ChangeDefaultDistance.class);
}
startActivity(intent);
this.finish();
return true;
}
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long id) {
TextView tv;
tv = (TextView) view;
Map.distance = tv.getText().toString();
startActivity(new Intent(ChangeDefaultDistance.this, Map.class));
}
现在这里ChangeDefaultDistance是只包含列表视图的活动。现在,当从列表视图中选择特定项目时,我将再次启动映射活动。下面是代码
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent = new Intent();
if (item.getItemId() == R.id.LegalNotice) {
intent.setClass(Map.this, LegalNotices.class);
} else if (item.getItemId() == R.id.ChangeDistance) {
intent.setClass(Map.this, ChangeDefaultDistance.class);
}
startActivity(intent);
this.finish();
return true;
}
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long id) {
TextView tv;
tv = (TextView) view;
Map.distance = tv.getText().toString();
startActivity(new Intent(ChangeDefaultDistance.this, Map.class));
}
所有功能都正常工作
但是它没有再次缩放和绘制标记,这可能是什么问题?您没有看到在打开ListView
Activity
之前应用的更改的原因是您正在从scrach启动MapActivity
,它将再次抛出onCreate方法,并基本上在中创建所有视图再次执行此活动
简单地说,如果您正在创建另一个具有相同acitivity
的实例,那么现在您的活动堆栈中将有两个相同类型的活动
你应该做的不是用startActivity
方法启动列表活动,而是用startActivityForResult
启动列表活动,并将列表acitivity
的结果返回到已经创建的映射activity
中,而不是重新启动新的活动
看看这个问题,了解如何使用startActivityForResult
方法:
在文档中: