Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 重新加载映射活动不会再次显示标记_Android_Google Maps_Google Maps Api 2 - Fatal编程技术网

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.

我正在创建非常简单的应用程序,并尝试学习android

在这个应用程序中,我创建了一个包含地图的活动,它还有一个选项菜单,单击选项菜单项打开另一个活动并关闭当前地图。这是代码

@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启动Map
Activity
,它将再次抛出onCreate方法,并基本上在中创建所有视图再次执行此
活动

简单地说,如果您正在创建另一个具有相同
acitivity
的实例,那么现在您的活动堆栈中将有两个相同类型的活动

你应该做的不是用
startActivity
方法启动列表活动,而是用
startActivityForResult
启动列表活动,并将列表
acitivity
的结果返回到已经创建的映射
activity
中,而不是重新启动新的
活动

看看这个问题,了解如何使用
startActivityForResult
方法:

在文档中: