首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DialogFragment上的SupportMapFragment

DialogFragment上的SupportMapFragment
EN

Stack Overflow用户
提问于 2013-06-06 21:11:03
回答 2查看 5.4K关注 0票数 4

我需要在Dialog中嵌入一个SupportMapFragment。这是我能想到的最好的:

代码语言:javascript
复制
public class SupportMapFragmentDialog extends DialogFragment {

    private final SupportMapFragment fragment;

    public SupportMapFragmentDialog() {
        fragment = new SupportMapFragment();
        setTargetFragment(fragment, 1);
    }

    @Override
    public View onCreateView(final LayoutInflater inflater,
            final ViewGroup container, final Bundle savedInstanceState) {
        return fragment.onCreateView(inflater, container, savedInstanceState);
    }

    public SupportMapFragment getFragment() {
        return fragment;
    }

}

但是,当我调用它时:

代码语言:javascript
复制
final SupportMapFragmentDialog dialog = new SupportMapFragmentDialog();
dialog.show(getSupportFragmentManager(), "Historico");

我明白了:

如何才能在对话框中查看地图?

这个应用程序还有另一个SupportMapFragment正在创造奇迹,所以它与配置没有任何关系。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-06 22:53:19

最后,我最终在常规Dialog中使用了MapView,而不是SupportMapFragment

这是我的代码:

代码语言:javascript
复制
final Historico h = adapter.getItem(arg2 - 1);
if (mv.getParent() != null) {
    ((ViewGroup) mv.getParent()).removeView(mv);
}
final Dialog d = new Dialog(HistorialScreen.this);
d.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
d.requestWindowFeature(Window.FEATURE_NO_TITLE);
d.setContentView(mv);
mv.getMap().clear();
mv.getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(h.getPosicion(), 17));
final MarkerOptions options = new MarkerOptions();
options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN));
options.position(h.getPosicion());
mv.getMap().addMarker(options);
d.show();

并且它的工作方式与预期的一样。

票数 1
EN

Stack Overflow用户

发布于 2013-11-01 19:37:24

您可以通过以下方式在对话框中显示地图片段

代码语言:javascript
复制
public class DialogMapFragment extends DialogFragment {

    private SupportMapFragment fragment;

    public DialogMapFragment() {
        fragment = new SupportMapFragment();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.mapdialog, container, false);
        getDialog().setTitle("");
        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
        transaction.add(R.id.mapView, fragment).commit();

        return view;
    }



    public SupportMapFragment getFragment() {
        return fragment;
    }
}

R.layout.mapdialog:

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="0dp" >

    <FrameLayout
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

</RelativeLayout>
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16963019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档