下面我列出了两个函数。我有一个用于“正弦”功能的按钮 - 它可以完美运行,在 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功能(无论点击是正常的还是长的都是相同的功能)
谢谢你。