【问题标题】:Button to Map Android App映射 Android 应用程序的按钮
【发布时间】:2012-10-23 00:12:56
【问题描述】:

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

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

我还制作了另一个应用程序,它使用 Google Developers 的tutorial 在应用程序打开时显示 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;
    }
}

感谢您的帮助,干杯。

【问题讨论】:

  • 丹,我需要了解更多关于你想要做什么的信息。您希望 Google 地图加载到您的应用程序中,还是希望在用户单击您的按钮时打开实际的 Google 地图应用程序? (请注意,调用实际的 Google Maps 应用程序涉及一些仅适用于美国位置的黑客攻击,上次我检查过。)其次,我看到您正在使用 MapActivity,它是 Google Maps API v2 的一部分,正在被 Google 弃用支持 v3,它不需要 API 密钥,可以通过 WebView 在 JavaScript 中访问。您使用 Maps v2 的任何原因?
  • 哎呀 NVM 关于 MapActivity。我猜他们为 Maps API V3 保留了它,但我认为他们也在弃用它。在我的一个项目中,我实际上在 WebView 中实现了一个 JavaScript 地图,因为这是我的信念。 :-(
  • 我只想在按下“查看地图”按钮时在我的应用程序中使用 Google Maps API。我已经让应用程序在打开应用程序时加载 API,但是我不知道如何制作它,以便除非按下“查看地图”按钮,否则不使用 API。我不会撒谎,你回复的第二部分很搞笑,哈。

标签: android button maps


【解决方案1】:

好的,我认为您需要将 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”中的所有内容都应该进入新 Map Activity 的 onCreate() 方法。

【讨论】:

  • 将扩展 Activity 的 MainActivity 视为带有按钮的活动。将我上面编写的第一段代码放入按钮的 OnClickListener 中,另一行代码在类中但在任何函数之外。通过创建这个新的 Intent,它启动了扩展 MapActivity 的 Activity 类,基本上,您的应用程序现在有两个屏幕,您可以在使用 Back 按钮和 buttonMap 之间来回切换。不要将 Intent 代码放入 MapActivity。您的 MainActivity 仅包含带有意图的按钮,而您的 MapActivity 仅包含地图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多