下面我列出了两个功能。我有一个“正弦”功能的按钮 - 它完美地工作,在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功能(无论点击是正常还是长,都是相同的功能)
谢谢。
答案 0 :(得分:0)
启用按钮的长按属性
可能会有所帮助button_sin.setLongClickable(true); // CODE
OR
android:longClickable="true" // XML
然后正如@Opiatefuchs指出的那样,你应该以与提供.setOnLongClickListener()
整洁的方式相同的方式来调用.setOnClickListener()
。
希望它有所帮助!