计算器按钮(Android)-区分普通点击和长点击(正弦和圆弧正弦函数)

计算器按钮(Android)-区分普通点击和长点击(正弦和圆弧正弦函数),android,calculator,trigonometry,Android,Calculator,Trigonometry,下面我列出了两个函数。我有一个“正弦”功能的按钮-这是完美的工作和长按我想添加正弦逆函数或弧正弦 ***注意:下面两个函数之间的区别只是我在一行中指定了afterin变量,在一行中我使用Math.sin,在另一行中使用-Math.asin,这就是它的区别 问题是,正常点击或长点击,我只得到了“正弦”函数,尽管我已经编写了一个函数,我不知道为什么,但它似乎忽略了它,并给出了正常点击函数。(再次强调,长点击时,它并没有给出我想要的圆弧正弦函数,只是给出了正常函数“正弦”,这与正常的OnClick函数

下面我列出了两个函数。我有一个“正弦”功能的按钮-这是完美的工作和长按我想添加正弦逆函数或弧正弦

***注意:下面两个函数之间的区别只是我在一行中指定了afterin变量,在一行中我使用Math.sin,在另一行中使用-Math.asin,这就是它的区别

问题是,正常点击或长点击,我只得到了“正弦”函数,尽管我已经编写了一个函数,我不知道为什么,但它似乎忽略了它,并给出了正常点击函数。(再次强调,长点击时,它并没有给出我想要的圆弧正弦函数,只是给出了正常函数“正弦”,这与正常的OnClick函数相同。)

以下是正常的OnClick:

public void onClickListener_sin(View v) {
    vibrator.vibrate(30);

    EditTextMsg = editText.getText().toString();
    doubleEditTextMsg = Double.parseDouble(EditTextMsg);// degree

    toRadian_doubleEditTextMsg = Math.toRadians(doubleEditTextMsg);

    afterSin = Math.sin(toRadian_doubleEditTextMsg);
////////唯一不同的行是上面的(Sin、here和ASin) editText.setText(afterin.toString())

及 这是LongClick函数(我希望它给出asin,但它忽略了该函数并继续使用normal(上面的函数并给出“Sine”)

我在编辑文本框中显示结果和输入。。。 (结果,result_mul,sum变量不应该与这个问题相关,我复制了它们,因为它们在我的计算器特定代码中用于各自的函数…它不应该与当前问题相关)

那么,你能发现什么错误吗? (它忽略onLongClick…,只执行普通Onclick功能(无论单击是正常的还是长的,都是相同的功能)


谢谢。

启用按钮的长时间可点击属性可能会有所帮助

button_sin.setLongClickable(true); // CODE

然后正如@Opiatefuchs所指出的,为了整洁起见,您应该以提供
.setOnClickListener()
的方式调用
.setOnLongClickListener()


希望能有所帮助!

我认为您应该在单击Listener时设置此按钮,就像在使用onLongClickListener时一样。例如按钮\u sin.setOnClickListener(新的OnClickListener()){};但我正在链接我直接拥有的一个…无论如何,我会尝试这个,我不在乎它如何工作…马上回来..是的,这不是问题..结果是,我没有做这个早期的,但程序仍然没有显示任何区别…事实上,如果你看到我的函数,最后一行“return true”实际上正在做这个…(我想),它将侦听器设置为“开”…问题在于代码中,idk为什么它不给我Asine,它只是在正常和长时间单击时都给“正弦”…嗯,对。你试过为调试调用哪个函数干杯吗?
  button_sin.setOnLongClickListener(new OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
            vibrator.vibrate(30);

            EditTextMsg = editText.getText().toString();
            doubleEditTextMsg = Double.parseDouble(EditTextMsg);// degree

            toRadian_doubleEditTextMsg = Math.toRadians(doubleEditTextMsg);


            afterSin = Math.asin(toRadian_doubleEditTextMsg);
            ///////////////The above line is the only difference between this and the above    ///////////function
            editText.setText(afterSin.toString());

            EditTextMsg = editText.getText().toString();
            result = Float.parseFloat(EditTextMsg);

            result_mul = Float.parseFloat(EditTextMsg);

            result_div = Float.parseFloat(EditTextMsg);

            sum = "";

            return true;
                }
            });
button_sin.setLongClickable(true); // CODE
android:longClickable="true" // XML