android: double onclicklistener 退出

标签 android

我正在编写一个应用程序,其中我有一张带有用户丢弃的标记的 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;
        }
    });

}

最佳答案

你的文字描述不是很清楚,但让我指出一些我认为你可以做的改变:

  1. 在 public boolean onMarkerClick(Marker marker) 上,您应该返回 true 以避免删除标记后的默认行为。

  2. 我认为您应该在方法 deleteMarker 之外添加 setOnMarkerClickListener,并且为了避免用户在单击标记时删除标记,您可以使用 bool 标志 (mDeleteMode)。

  3. 使用 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/

相关文章:

安卓 PathDashPathEffect : the path shape does not work for a straight line

android - 检查 GCM 消息的状态

android - 共享偏好和清晰的历史/数据

Android:像谷歌在他们的应用程序中那样显示进度圈

Android onActivityResult 从未启动

android - 如何解码unicode以在android Edittext中获取Emoji/Smiley?

java - 使用android手机发送TCP命令但没有发送数据

android - 自定义 CursorLoader 通知数据变化

android - 唤醒锁 android 服务重复出现

java - com.google.firebase.database.DatabaseException : Expected a Map while deserializing, 但得到了一个类 java.lang.Long