1

下面我列出了两个函数。我有一个用于“正弦”功能的按钮 - 它可以完美运行,在 LongClick 上我想添加正弦反函数或反正弦。

***注意:下面两个函数之间的区别只是我在其中分配 afterSin 变量的一行,在另一行中我使用 Math.sin - Math.asin,这没什么区别。

问题是,正常点击或长按,我只得到“正弦”功能,即使我已经编写了 asin 函数,我不知道为什么,但它似乎忽略了它并提供了正常的点击功能。(同样,在 longClicking 上,它并没有像我想要的那样给出反正弦函数,而只是给出了正常的函数 "sine" ,这与正常的 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 and ASin below)editText.setText(afterSin.toString());

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

    result_mul = Float.parseFloat(EditTextMsg);

    result_div = Float.parseFloat(EditTextMsg);

    sum = "";

}

并且这是 LongClick 函数(我希望它给出 asin,但它忽略该函数并继续正常(上面的函数并给我 "Sine" )

  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;
                }
            });

我在 EditText 框中显示结果和输入......(结果,result_mul,sum 变量不应该与这个问题相关,我还是复制了它们,因为它们用于我的计算器特定代码中的各个函数.. .应该和现在的问题没有关系)

那么,你能发现什么不对吗?(它忽略了onLongClick ....并简单地执行正常的Onclick功能(无论点击是正常的还是长的都是相同的功能)

谢谢你。

4

1 回答 1

0

启用按钮的长按属性可能会有所帮助

button_sin.setLongClickable(true); // CODE

或者

android:longClickable="true" // XML

然后正如@Opiatefuchs 所指出的那样,您确实应该以与您提供整洁的.setOnLongClickListener()方式相同的方式调用。.setOnClickListener()

希望能帮助到你!

于 2013-07-30T07:57:17.463 回答