如何在Fragment中使用InfoWindowAdapter和onMArkerClick

时间:2015-04-24 08:27:42

标签: android dictionary fragment

在Activity类中我有这个代码:

key

现在我在Fragment工作。我有两个错误。

此行中的一个(方法未定义):

    class MyInfoWindowAdapter implements InfoWindowAdapter{

    private  View view;

    public MyInfoWindowAdapter(){

        view = getLayoutInflater().inflate(R.layout.custom_info_globo_marker,null);

    }

    //implemets metod of MyInfoWidowAdapter
    @Override
    public View getInfoContents(Marker marker) {

            TextView tvTitle = ((TextView)view.findViewById(R.id.title));
            tvTitle.setText(marker.getTitle());
            return view;
    }

    @Override
    public View getInfoWindow(Marker marker) {
    // TODO Auto-generated method stub
    return null;
    }

}

@Override
public boolean onMarkerClick(Marker marker) {
    // TODO Auto-generated method stub

    //ActionBar Contextual
    mActionMode = InstalacionesEncontradasMostradasEnMapaActivity.this.startActionMode(new ActionBarCallBack(marker));
    mActionMode.setTitle(marker.getTitle());


    return false;
}

并在此行中(方法启动操作模式未定义):

view = getLayoutInflater().inflate(R.layout.custom_info_globo_marker,null);

1 个答案:

答案 0 :(得分:0)

简短的回答是:Activity != Fragment

要获得LayoutInflater个实例,您需要Context。各种选项(来自片段内):

getActivity().getLayoutInflater().inflate(...);
LayoutInflater.from(getActivity()).inflate(...);
((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(...);

startActionMode()的类似问题。此方法仅适用于Activity,因此您需要在一个方法上调用它:

getActivity().startActionMode(...)

或者,如果您正在使用支持库:

((AppCompatActivity) getActivity()).startSupportActionMode(...)

(尽管make the activity and fragment communicate可能会以更灵活的方式相互促进。)