使用自定义InfoWindow获取NullPointerException

时间:2014-02-20 04:50:51

标签: android google-maps customization infowindow

我在我的应用中使用自定义InfoWindow。我有两个与之相关的问题。

  
      
  1. 是否可以在InfoWindow
  2. 中制作多行代码段   

假设我正在添加一些数据,我可以说当我点击标记时我需要显示LATTITUDE和LONGITUDE。通常,如果你在片段中设置这些值,它们就会显示在同一行上。我想在两行上展示它们。这可能吗

我用谷歌搜索多行片段,找不到任何有用的东西,所以提出了自定义InfoWindow的想法。

  

2.Below show是我的自定义InfoWindow,它给了我NullPointerException

从try-catch循环获取异常。我跟踪了一些我在谷歌搜索时找到的代码,但是它没有用。

 private class MyCustomInfoWindow implements InfoWindowAdapter{


    private View view;

    public MyCustomInfoWindow(){

    }

    @Override
    public View getInfoContents(Marker markr) {
        // TODO Auto-generated method stub


        return null;
    }

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

        view = getLayoutInflater().inflate(R.layout.mycustom_infowindow, null);
        TextView marker_heading = (TextView)findViewById(R.id.marker_heading);
        try{

            String m_heading = marker.getId();
            marker_heading.setText(m_heading);

        }
        catch(Exception exx){
            Toast.makeText(getApplicationContext(), "getInfoWindow Error is  " + marker_heading.length(), Toast.LENGTH_LONG).show();

        }
        return view;
    }



}    

我的自定义

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">    

  <TextView 
    android:id="@+id/marker_heading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:typeface="serif"
    android:textStyle="bold" 
    />    

</LinearLayout>

使用Google Maps V2

有人可以告诉我哪里出错了。

3 个答案:

答案 0 :(得分:2)

使用

TextView marker_heading = (TextView)view.findViewById(R.id.marker_heading);

初始化marker_heading TextView个实例,因为TextView位于mycustom_infowindow布局内

答案 1 :(得分:1)

你应该替换这个

  TextView marker_heading = (TextView)findViewById(R.id.marker_heading);

使用

  TextView marker_heading = (TextView)view.findViewById(R.id.marker_heading);

答案 2 :(得分:1)

使用

TextView marker_heading = (TextView)view.findViewById(R.id.marker_heading); 

你必须传递Views对象作为查找TextView

的id的引用