1

我显然是应用程序开发的新手,但基本上我想做的是制作一个简单的应用程序,它有一个名为“查看地图”的按钮,按下时会打开谷歌地图。

到目前为止,我已经编写了一个带有“查看地图”按钮的应用程序,该按钮在按下时仅在按钮下方返回一些文本,如下所示。

在此处输入图像描述

我还制作了另一个应用程序,它使用 Google Developers 的教程在应用程序打开时显示 Google 地图。

当我尝试将这两个应用程序结合在一起时,我的问题就出现了。它不是在打开时仅显示按钮,而是在主屏幕中同时显示按钮和地图,如下所示:

在此处输入图像描述

按下按钮时什么也不做。

我尝试做的是使用 OnClickListener 在按下按钮时加载地图,但这显然不起作用。我认为它与我的 activity_main 类有一些非常基本的关系,但我需要帮助对其进行整理,以便在加载应用程序时不会立即创建地图。

我的 activity_main 类如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<com.google.android.maps.MapView
    android:id="@+id/mapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:apiKey="**My Key**"
    android:clickable="true"
    android:enabled="true" />

<Button
    android:id="@+id/buttonMap"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="View Map" />
</RelativeLayout>

我的 MainActivity 类看起来像这样:

public class MainActivity extends MapActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button buttonMap = (Button) findViewById(R.id.buttonMap);
        buttonMap.setOnClickListener(mapListener);
    }

    private OnClickListener mapListener = new OnClickListener() {
        public void onClick(View v) {
            MapView mapView = (MapView) findViewById(R.id.mapView);
            mapView.setBuiltInZoomControls(true);
        }
   };

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

任何帮助表示赞赏,欢呼。

4

1 回答 1

0

好的,我认为您需要将 MainActivity 用于按钮,然后设置按钮的 OnClickListener 以触发另一个将扩展 MapActivity 的 Activity。然后,您的 MainActivity 将仅扩展 Activity。这是您的“mapListener”应包含的内容:

Intent i = new Intent(ctx, MyMapView.class);
// i.putExtra("key", "value"); // use this to give extra data to the new Activity
startActivity(i);

在 MainActivity 中将 ctx 定义为实例变量(即在任何函数之外)并将其设置为“this”:

Context ctx = this;

在 mapListener 中,“this”是 OnClickListener 对象本身,而不是 Activity,因此在“new Intent()”中使用“this”会导致错误。由于 mapListener 存在于 Activity 内部,因此“ctx”可以正常显示,其含义不会改变。

“mapListener.onClick”中的所有内容都应该进入新地图活动的 onCreate() 方法。

于 2012-10-22T16:12:56.070 回答