计算器按钮(Android) - 区分正常点击和longClick(用于正弦和反正弦函数)

时间:2013-07-30 07:23:57

标签: android calculator trigonometry

下面我列出了两个功能。我有一个“正弦”功能的按钮 - 它完美地工作,在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,这里和ASin下面)         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,但它忽略了函数并继续正常(上面的函数并给我“正弦”)

  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功能(无论点击是正常还是长,都是相同的功能)

谢谢。

1 个答案:

答案 0 :(得分:0)

启用按钮的长按属性

可能会有所帮助
button_sin.setLongClickable(true); // CODE

OR

android:longClickable="true" // XML

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

希望它有所帮助!