android 中的自定义弹出窗口 activity 而不是对话

Custom popup activity in android instead of dialogue

我正在制作一个使用地图 api 的应用程序,我想在用户创建标记时创建一个自定义弹出窗口 activity(不是通用的 yes/no 对话)。我想做的是:

  1. 当用户长按地图时,它会打开一个新的 activity 而不是对话
  2. 这个 activity 显示经纬度,有一个输入文本的字段和 yes/no 按钮
  3. 如果用户点击是,则标记被固定,如果不是,则不会
  4. 当用户点击创建的标记时,它会显示纬度、经度和输入的文本

我当前的代码:

    //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));

      }
    });

感谢任何帮助:)

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

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

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

其他几个tutorials/examples:https://www.google.com/search?q=dialogfragment

好吧,也许我没有得到所有的细节,但在这种情况下我会做以下事情:

1. 使用OnMapLongClickListener。然后在 onMapLongClick() 你可以为所欲为。您有带有 latitudelongitudeLatLng 对象 - 您可以将它们放在 Bundle 中或以其他方式将它们传递给新的 Activity.
例如可以参考this post
创建一个 Marker 并将其作为一个字段存储在您的 Activity.

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

3. 您可以使用 StartActivityForResult 方法开始您的新 Activity 并在 return 上处理来自您的新 Activity 的结果。 在 Whosebug 上也有很多关于它的信息。 For example this.
然后,在 onActivityResult() 中,您可以对 Marker 进行一些操作(例如,删除它)。

4. 使用 OnMarkerClickListener - 在 onMarkerClick(Marker marker)Marker 你可以调用 getPosition() - 然后使用 latlng 来自它。

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