【问题标题】:Custom popup activity in android instead of dialogueandroid中的自定义弹出活动而不是对话
【发布时间】:2016-04-10 13:52:34
【问题描述】:

我正在制作一个使用 maps api 的应用程序,并且我想在用户创建标记时创建一个自定义弹出活动(不是通用的是/否对话)。我想做的是:

  1. 当用户长按地图时,它会打开一个新活动而不是对话
  2. 此活动显示 lat 和 lang,具有输入文本的字段和是/否按钮
  3. 如果用户单击是,则标记被固定,如果不是,则不是
  4. 当用户点击创建的标记时,它会显示 lat、lng 和输入的文本

我当前的代码:

    //Add marker on long click
    mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {

    @Override
    public void onMapLongClick(LatLng arg0) {

        Intent intent = new Intent(getActivity(), CreateRestautantActivity.class);
        startActivity(intent);

        marker = mMap.addMarker(new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.custom_marker))
                .position(
                        new LatLng(arg0.latitude,
                                arg0.longitude))
                .visible(true));

      }
    });

任何帮助表示赞赏:)

【问题讨论】:

  • 为什么不使用自定义对话而不是打开活动,如果您为该地图创建单独的活动,当您再次返回地图时再次重新加载!所以我会建议比这更好的自定义对话。
  • @Jhaman Das 我计划扩展此弹出窗口 - 添加日期/时间选项、标记一些朋友、启用聊天等,所以我认为将其作为一项活动会更好。跨度>

标签: android google-maps-api-3 google-maps-markers popupwindow


【解决方案1】:

好的,也许我没有了解所有详细信息,但在这种情况下,我会执行以下操作:

1. 使用 OnMapLongClickListener。然后在onMapLongClick() 你可以做任何你想做的事。你有 LatLng 对象和 latitudelongitude - 你可以把它们放在 Bundle 或以其他方式将它们传递给新的 Activity
例如,您可以参考this 帖子。
创建一个Marker 并将其作为字段存储在您的Activity 中。

2. 我想,为新的Activity 制作xml 并使用它很容易它在setContentView()。将您在上一步中传递的参数放入latlng 字段中。将OnClickListener 放在您的按钮上。

3. 您可以使用StartActivityForResult 方法启动新的Activity,并在返回时处理来自新Activity 的结果。 在 stackoverflow 上也有很多关于这方面的信息。 For example this.
然后,在onActivityResult() 中,您可以对您的Marker 执行一些操作(例如,将其删除)。

4. 使用OnMarkerClickListener - 并在onMarkerClick(Marker marker) 中从Marker 调用getPosition() - 并从中获取latlng

如果您需要更多详细信息,请告诉我 ;)

【讨论】:

  • 这看起来像我要找的东西,谢谢。我在我的问题中添加了我当前的代码。这是我在问这个问题之前所做的。我是软件开发的初学者,所以不是很多。如果我卡住了,我会告诉你的。再次感谢:)
  • 欢迎您 ;) 另外请考虑将来使用片段(或 DialogFragment,如 @nasch 所述)。它可以根据您的需要变得复杂。第一次使用它可能会有些困难,但使用 Fragments 代替 Activities 最终会为您的应用程序提供更大的灵活性。
  • 但是第一次用 Activity 也很好)
  • 我可能会这样做。正如我所说,我害怕使用它,因为我会用我的联系人列表从中调用另一个对话框。但正如你所说,因为它可能很复杂,我无论如何都可以使用它。我想这就是为什么我没有找到任何活动示例的原因:)
【解决方案2】:

您应该使用DialogFragment。这允许您自定义对话框的外观和功能。

关于如何使用它们的 Android 博客文章:http://android-developers.blogspot.com/2012/05/using-dialogfragments.html

参考:https://developer.android.com/reference/android/app/DialogFragment.html

其他几个教程/示例:https://www.google.com/search?q=dialogfragment

【讨论】:

  • 我不想使用对话,因为我打算让这个弹出窗口更复杂 - 添加日期/时间选项,标记一些朋友(来自弹出对话),启用聊天等,所以我认为将其作为一项活动会更好。
  • 在活动中可以做的任何事情都可以在DialogFragment 中做。我认为这比尝试管理两个活动之间的导航要简单得多。
  • 我最担心的是我必须从 DialogueFragment 打开联系人对话(当我添加一个选项来选择要在标记上标记的朋友时)。这似乎是不应该做的事情。感谢您的解释,它真的很有帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多