gpt4 book ai didi

android - java.lang.NullPointerException 在 android 中单击标记

转载 作者:行者123 更新时间:2023-11-29 01:52:18 24 4
gpt4 key购买 nike

我在 map 上显示了一些标记,这些标记是根据纬度和经度动态生成的。

我正在使用一个自定义信息窗口,当单击标记时会显示一个 ImageView 和一个 TextView。

map.setInfoWindowAdapter(new InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
return v;
}
@Override
public View getInfoContents(Marker marker) {
v = getLayoutInflater().inflate(R.layout.info_window_layout,
null);

Bitmap myBitmap;
try {
URL url = new URL(
"URL here");
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();

connection.setDoInput(true);

connection.connect();
connection.setReadTimeout(120000);
InputStream input = connection.getInputStream();
myBitmap = BitmapFactory.decodeStream(input);

} catch (IOException e) {
e.printStackTrace();
return null;
}
ImageView imgPhoto = (ImageView) v
.findViewById(R.id.imageView1);
tvPropertyID = (TextView) v.findViewById(R.id.textView1);
imgPhoto.setImageBitmap(myBitmap);
return v;
}
});

map.setOnMarkerClickListener(this);


and Dynamically placing markers like this,

protected void placeMarker(final List<PropertiesList> PropertyStub) {

for (int i = 0; i <= PropertyStub.size() - 1; i++) {
final LatLng MeanLatLng = new LatLng(PropertyStub.get(i).Latitude,
PropertyStub.get(i).Longitude);

if (!visibleMarkers.containsKey(PropertyStub.get(i).PropertyID)) {
visibleMarkers
.put(PropertyStub.get(i).PropertyID,
this.map.addMarker(new MarkerOptions()
.position(MeanLatLng)
.title("Property")

.icon(BitmapDescriptorFactory
.fromResource(R.drawable.pink_outside_marker))));
}
}
}

这里我使用 hashmap 来跟踪用户点击的标记,并根据位置和 PropertyID 等字段相应地显示图像和文本。

onMarkerClick,

View v;
public boolean onMarkerClick(Marker marker) {
Log.d("", "On marker click");
Log.d("", "VisibleMarkerText: " + visibleMarkers.get(marker));
tvPropertyID = (TextView) v.findViewById(R.id.textView1);
tvPropertyID.setText("" + visibleMarkers.get(marker));

return true;
}

我在 map.setInfoWindowAdpater() 中实例化“v”。

在这一行“tvPropertyID = (TextView) v.findViewById(R.id.textView1);”它给出了空指针异常。 不仅如此,我得到的“visibleMarkers.get(marker)”值为空。

这是我的日志,

 06-18 12:39:26.812: E/AndroidRuntime(19018): FATAL EXCEPTION: main
06-18 12:39:26.812: E/AndroidRuntime(19018): java.lang.NullPointerException
06-18 12:39:26.812: E/AndroidRuntime(19018): at com.bu.PropertySearchTypes.MapSearch.onMarkerClick(MapSearch.java:230)
06-18 12:39:26.812: E/AndroidRuntime(19018): at com.google.android.gms.maps.GoogleMap$4.f(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at com.google.android.gms.internal.bp$a.onTransact(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at android.os.Binder.transact(Binder.java:279)
06-18 12:39:26.812: E/AndroidRuntime(19018): at bds.a(SourceFile:84)
06-18 12:39:26.812: E/AndroidRuntime(19018): at maps.aj.bk.a(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at maps.as.d.a(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at maps.as.p.c(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at maps.as.o.a(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at maps.as.bo.c(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at maps.as.bk.onSingleTapConfirmed(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at maps.bs.g.onSingleTapConfirmed(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at maps.bs.i.handleMessage(Unknown Source)
06-18 12:39:26.812: E/AndroidRuntime(19018): at android.os.Handler.dispatchMessage(Handler.java:99)
06-18 12:39:26.812: E/AndroidRuntime(19018): at android.os.Looper.loop(Looper.java:130)
06-18 12:39:26.812: E/AndroidRuntime(19018): at android.app.ActivityThread.main(ActivityThread.java:3687)
06-18 12:39:26.812: E/AndroidRuntime(19018): at java.lang.reflect.Method.invokeNative(Native Method)
06-18 12:39:26.812: E/AndroidRuntime(19018): at java.lang.reflect.Method.invoke(Method.java:507)
06-18 12:39:26.812: E/AndroidRuntime(19018): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
06-18 12:39:26.812: E/AndroidRuntime(19018): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
06-18 12:39:26.812: E/AndroidRuntime(19018): at dalvik.system.NativeStart.main(Native Method)

请大家指正。我不知道除此之外。 感谢您的帮助!!

最佳答案

这是自定义信息windows adopter,在这里自定义你的 View 并设置为你的mMap

/** Demonstrates customizing the info window and/or its contents. */
class CustomInfoWindowAdapter implements InfoWindowAdapter
{
// private final RadioGroup mOptions;

// These a both viewgroups containing an ImageView with id "badge" and two TextViews with id
// "title" and "snippet".
private final View mWindow;
private final View mContents;

CustomInfoWindowAdapter()
{
mWindow = getLayoutInflater().inflate(R.layout.custom_info_window, null);
mContents = getLayoutInflater().inflate(R.layout.custom_info_contents, null);
// mOptions = (RadioGroup) findViewById(R.id.custom_info_window_options);
}

@Override
public View getInfoWindow(Marker marker)
{
// if (mOptions.getCheckedRadioButtonId() != R.id.custom_info_window)
// {
// // This means that getInfoContents will be called.
// return null;
// }
render(marker, mWindow);
return mWindow;
}

@Override
public View getInfoContents(Marker marker)
{
// if (mOptions.getCheckedRadioButtonId() != R.id.custom_info_contents)
// {
// // This means that the default info contents will be used.
// return null;
// }
render(marker, mContents);
return mContents;
}

private void render(Marker marker, View view)
{

String title = marker.getTitle();
TextView titleUi = ((TextView) view.findViewById(R.id.title));
if (title != null)
{
// // Spannable string allows us to edit the formatting of the text.
SpannableString titleText = new SpannableString(title);
// titleText.setSpan(new ForegroundColorSpan(Color.RED), 0, titleText.length(), 0);
titleUi.setText(titleText);
}
else
{
titleUi.setText("");
}
//
String snippet = marker.getSnippet();
TextView snippetUi = ((TextView) view.findViewById(R.id.snippet));
if (snippet != null)// && snippet.length() > 12)
{
SpannableString snippetText = new SpannableString(snippet);
// snippetText.setSpan(new ForegroundColorSpan(Color.MAGENTA), 0, 10, 0);
// snippetText.setSpan(new ForegroundColorSpan(Color.BLUE), 12, snippet.length(), 0);
snippetUi.setText(snippetText);
}
else
{
snippetUi.setText("");
}
}
}

将其设置为您的 map 。

// Setting an info window adapter allows us to change the both the contents and look of the
// info window.
mMap.setInfoWindowAdapter(new CustomInfoWindowAdapter());

你可以找到示例项目映射你的 SDK 路径 >extrass > google > google_play_services > samples > maps只需从 New project > Android Project from existing Code 加载它

关于android - java.lang.NullPointerException 在 android 中单击标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17162887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com