我正在编写一个应用程序,其中我有一张带有用户丢弃的标记的 map
我想到了这种删除用户不想要的标记的方法:首先单击一个图标,然后单击该标记,该标记将被删除。我遇到的问题是,在最初点击图标后,所有标记都会在点击时被删除。我需要一种方法来摆脱 OnClickListener
。我尝试了 return;
但没有成功。
mDelete = view.findViewById(R.id.Im_delete);
mDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: clicked Delete icon");
deleteMarker();
return;
}
});
private void deleteMarker(){
Toast.makeText(getActivity(), "Click a marker to delete it", Toast.LENGTH_SHORT).show();
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
marker.remove();
return false;
}
});
}
最佳答案
你的文字描述不是很清楚,但让我指出一些我认为你可以做的改变:
在 public boolean onMarkerClick(Marker marker) 上,您应该返回 true 以避免删除标记后的默认行为。
我认为您应该在方法 deleteMarker 之外添加 setOnMarkerClickListener,并且为了避免用户在单击标记时删除标记,您可以使用 bool 标志 (mDeleteMode)。
使用 mDeleteMode 标志,您将在用户单击 mDelete 时将其设置为真,并在例如 a) 用户删除标记、b) 单击外部或 c) 再次单击 mDelete 时将其设置为假.
public class yourClass {<p></p>
<pre><code> private boolean mDeleteMode = false;
protected void yourMethod(View view...) {
mDelete = view.findViewById(R.id.Im_delete);
mDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: clicked Delete icon");
Toast.makeText(getActivity(),
"Click a marker to delete it",
Toast.LENGTH_SHORT).show();
mDeleteMode = true;
}
});
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
if (mDeleteMode) {
mDeleteMode = false;
marker.remove();
return true;
}
return false;
}
});
}
}
</code></pre>
<p></p>
关于android: double onclicklistener 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49970920/