【问题标题】:Tap button again to confirm action再次点击按钮以确认操作
【发布时间】:2019-07-31 16:38:38
【问题描述】:

如何制作一个按钮,当按下该按钮时会显示一条提示消息,要求用户再次点击按钮以确认操作。这是我到目前为止所拥有的,

    Button myExitClose = alertLayout.findViewById(R.id.homeExitClose);
    ImageView myExitDismiss = alertLayout.findViewById(R.id.homeExitDismiss);
    final LinearLayout adContainer = alertLayout.findViewById(R.id.homeExitAdView);


    myExitClose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            exitDialog.dismiss();
            finish();
        }
    });

    myExitDismiss.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            exitDialog.dismiss();
        }
    });
    alert.setView(alertLayout);
    alert.setCancelable(false);
    exitDialog = alert.create();
}

【问题讨论】:

  • 你的代码有什么问题或结果是什么?
  • 只需创建一个带有按钮的新窗口并在单击时打开它?

标签: java android onclicklistener android-button


【解决方案1】:

按下按钮时,记录按下的时间戳。如果再次按下按钮,则将新时间戳与旧时间戳进行比较,如果两次按下的时间足够接近,则执行特殊操作。

private Long lastPressedTime = null;
button.setOnClickListener(v -> {
    long currentTime = System.currentTimeMillis();

    if (lastPressedTime == null || (currentTime - lastPressedTime) > 2000) {
        Toast.makeText(v.getContext(), "Tap again to exit", Toast.LENGTH_SHORT).show();
        lastPressedTime = currentTime;
    } else {
        finish();
    }
});

您可以将2000 更改为您想要的任何数字; 2000 毫秒是两秒,但也许您想要更长的窗口。

【讨论】:

    【解决方案2】:

    使用处理程序来安排设置按钮操作,如下所示:

    final OnClickListener listener = new OnClickListener(){
            public void onClick(View v) {
                Toast.makeText(YourActivity.this,"press back one more time to exit",Toast.LENGTH_SHORT).show();
                myExitClose.setOnClickListener(new OnClickListener(){
                    YourActivity.this.finish();
                });
                new Handler().postDelay(new Runable(){
                   myExitClose.setOnClickListener(listener);
                },2000); //wait 2 second for the next pressed
            }
    }
    myExitClose.setOnClickListener(listener);
    

    【讨论】:

    • 感谢您的洞察力,您的代码帮助我更好地理解了我的问题。
    • @Imkong Akum Longchar 如果我的回答解决了您的问题,请接受,如果没有,请告诉我,我会编辑它。
    【解决方案3】:

    如何在定义的时间间隔内双击退出应用程序的示例:

    private long backPressed;
    private static final int TIME_INTERVAL = 2000;
    
    @Override
    public void onBackPressed() {
        if( backPressed + TIME_INTERVAL > System.currentTimeMillis() ) {
            finish();
            super.onBackPressed();
            return;
        } else {
            Toast.makeText(this, "Tap again to exit", Toast.LENGTH_SHORT).show();
        }
    
        backPressed = System.currentTimeMillis();
    }
    

    将代码粘贴到onClick() 的侦听器。

    【讨论】:

      【解决方案4】:

      这是它的基本要点。 Toast.maketext 接受上下文、字符串和持续时间。

      myExitClose.setOnClickListener( (click) ->  {
      
              Toast.makeText(getActivity(), "StringRes", Toast.LENGTH_SHORT).show();  
          });
      

      您还可以在显示之前制作一个 Toast 对象并操作放置等。

      【讨论】:

      • 再按一次按钮会发生什么??
      • 问题只是如何制作吐司。只需实施点击计数器以进行确认。非常随意。
      猜你喜欢
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多