0

この行のコードを壊している NullPointerException を取得しています:

if (options.isVisible()) {

コードのブロックは次のとおりです。

protected static GoogleMap map;
protected static MarkerOptions markerOptions;
private OnMarkerCreateListener listener;

public LazyMarker(GoogleMap map, MarkerOptions options) {
    this(map, options, null);
}

public LazyMarker(GoogleMap map, MarkerOptions options, OnMarkerCreateListener listener) {
    if (options.isVisible()) {
        createMarker(map, options, listener);
    } else {
        this.map = map;
        this.markerOptions = copy(options);
        this.listener = listener;
    }
}

MarkerOptions 変数に関係していると推測していますが、初期化されていないために壊れているかどうかはわかりませんか? どんな助けでも大歓迎です。

4

3 に答える 3

1

@Mznが言ったように、新しいパスを渡しMarkerOptions()

そこでnullチェックを行う必要があります

if (options!=null &&options.isVisible()) {
于 2013-05-07T21:04:43.453 に答える
0

はい。ランタイムは (例外をスローすることによって) 通知し、人間の確認を得ました。空のコンストラクターで MarkerOptions を初期化できます。デフォルトのマーカーをカスタマイズする必要がない場合は、新しい MarkerOptions() を渡します。

ドキュメントについては、このリンクを参照してください: https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/MarkerOptions

于 2013-05-07T20:57:19.750 に答える
0

LazyMarker() を呼び出す場所と、そのクラス内でどのように見えるかを教えていただければ幸いです。呼び出しを try-catch で囲むことをお勧めします。

try {
    ...
    marker = new LazyMarker(map, options, listener);
    ...
} catch (NullPointerException e) {
    e.printStackTrace();
}

それでもうまくいかない場合は、実際に MarkerOptions オブジェクトを変数に定義していることを確認してください。

それが役に立てば幸い。

于 2013-05-07T20:57:53.540 に答える