android 中的自定义弹出窗口 activity 而不是对话
Custom popup activity in android instead of dialogue
我正在制作一个使用地图 api 的应用程序,我想在用户创建标记时创建一个自定义弹出窗口 activity(不是通用的 yes/no 对话)。我想做的是:
- 当用户长按地图时,它会打开一个新的 activity 而不是对话
- 这个 activity 显示经纬度,有一个输入文本的字段和 yes/no 按钮
- 如果用户点击是,则标记被固定,如果不是,则不会
- 当用户点击创建的标记时,它会显示纬度、经度和输入的文本
我当前的代码:
//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()
你可以为所欲为。您有带有 latitude
和 longitude
的 LatLng
对象 - 您可以将它们放在 Bundle
中或以其他方式将它们传递给新的 Activity
.
例如可以参考this post
创建一个 Marker
并将其作为一个字段存储在您的 Activity
.
中
2. 我想,为新 Activity
制作 xml
并在 setContentView()
上使用它很容易。将您在上一步中传递的参数放入 lat
和 lng
字段中。将 OnClickListener
放在按钮上。
3. 您可以使用 StartActivityForResult
方法开始您的新 Activity
并在 return 上处理来自您的新 Activity
的结果。
在 Whosebug 上也有很多关于它的信息。 For example this.
然后,在 onActivityResult()
中,您可以对 Marker
进行一些操作(例如,删除它)。
4. 使用 OnMarkerClickListener - 在 onMarkerClick(Marker marker)
中 Marker
你可以调用 getPosition()
- 然后使用 lat
和lng
来自它。
如果您需要更多详细信息,请告诉我 ;)
我正在制作一个使用地图 api 的应用程序,我想在用户创建标记时创建一个自定义弹出窗口 activity(不是通用的 yes/no 对话)。我想做的是:
- 当用户长按地图时,它会打开一个新的 activity 而不是对话
- 这个 activity 显示经纬度,有一个输入文本的字段和 yes/no 按钮
- 如果用户点击是,则标记被固定,如果不是,则不会
- 当用户点击创建的标记时,它会显示纬度、经度和输入的文本
我当前的代码:
//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()
你可以为所欲为。您有带有 latitude
和 longitude
的 LatLng
对象 - 您可以将它们放在 Bundle
中或以其他方式将它们传递给新的 Activity
.
例如可以参考this post
创建一个 Marker
并将其作为一个字段存储在您的 Activity
.
中
2. 我想,为新 Activity
制作 xml
并在 setContentView()
上使用它很容易。将您在上一步中传递的参数放入 lat
和 lng
字段中。将 OnClickListener
放在按钮上。
3. 您可以使用 StartActivityForResult
方法开始您的新 Activity
并在 return 上处理来自您的新 Activity
的结果。
在 Whosebug 上也有很多关于它的信息。 For example this.
然后,在 onActivityResult()
中,您可以对 Marker
进行一些操作(例如,删除它)。
4. 使用 OnMarkerClickListener - 在 onMarkerClick(Marker marker)
中 Marker
你可以调用 getPosition()
- 然后使用 lat
和lng
来自它。
如果您需要更多详细信息,请告诉我 ;)