gpt4 book ai didi

android - setOnKeyListener 在 galaxy s2 上不会表现出与在模拟器上相同的行为

转载 作者:行者123 更新时间:2023-11-29 02:08:21 24 4
gpt4 key购买 nike

我一直在寻找解决这个问题的方法,但运气不佳。

我有一个简单的 android 应用程序,用户在一个 editText (@+id/incBox) 字段中输入一个数字,该数字的给定百分比会自动放入另一个 editText (@+id/excBox)。

我已经为两个 editText 字段实现了一个 setOnKeyListener,它获取输入的数字并进行计算以更新另一个字段(反之亦然)。

每次输入数字时,此代码在模拟器中运行良好,其他 editText 字段会更新。然而,当在我的三星 galaxy s2 上运行 apk 时,其他字段没有更新。 要更新其他字段在手机上,您需要按软键盘上的 Enter。我在这里错过了什么?我什至删除了 event.getAction() == KeyEvent.ACTION_UP "if"子句以确保没有 CANCEL 或 MULTITOUCH 事件影响 OnKey 监听器。我如何才能在手机上使用它?

我遇到的另一个问题是在字段中输入值后。移动到另一个字段并删除或按 enter 非常滞后。有时按下退格按钮删除已填充字段中的数字时会有 0.5 秒的延迟。这是因为 try catch 吗?

如有任何帮助,我们将不胜感激。

这是main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="top"
android:background="@drawable/bground"
>

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/inclusive"
android:textSize="20px"
android:paddingTop="10px"
android:textStyle="bold" />


<EditText
android:id="@+id/incBox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="25px"
android:layout_marginRight="25px"
android:singleLine="true"
>
<requestFocus />
</EditText>


<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20px"
android:textStyle="bold"
android:gravity="center_horizontal"
android:text="@string/exclusive" />

<EditText
android:id="@+id/excBox"
android:layout_width="fill_parent"
android:layout_height="60px"
android:inputType="numberDecimal"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="25px"
android:layout_marginRight="25px"
android:singleLine="true"
>
</EditText>
</LinearLayout>

这里是activity.java

public class PercentageCalculatorActivity extends Activity
{

private EditText inclusive;
private EditText exclusive;
DecimalFormat cost = new DecimalFormat("0.00");

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Set Activity Layout
setContentView(R.layout.main);

// Get the EditText and Button References
inclusive = (EditText)findViewById(R.id.incBox);
exclusive = (EditText)findViewById(R.id.excBox);

//Set KeyListener to ourself
inclusive.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
try
{

double num = Double.parseDouble( inclusive.getText().toString() );

if ( num > 0)
{
num = num * 0.25;
String exc = cost.format(num).toString();
exclusive.setText(exc);
}

// Close the keyboard on enter press if ( keyCode == 66 ) {
InputMethodManager imm = (InputMethodManager)getSystemService (Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(inclusive.getWindowToken(), 0);
}

return false;
}
catch (Throwable e)
{
// set other field to empty if this field is also blank
exclusive.setText("");
return false;
}
}
});

exclusive.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(event.getAction()==KeyEvent.ACTION_UP )
{
try
{
double num = Double.parseDouble( exclusive.getText().toString() );

if ( num > 0)
{
num = num * 4;
String exc = cost.format(num).toString();
inclusive.setText(exc);
}

if ( keyCode == 66 )
{
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(exclusive.getWindowToken(), 0);
}

return false;
}
catch (Throwable e)
{
// set other field to empty if this field is also blank
inclusive.setText("");
return false;
}

}
else
{
return false;
}

}
});

最佳答案

它实际上不取决于设备,而是取决于您选择的键盘。我以前遇到过这个。如果您将键盘换成另一个键盘,您会发现它突然开始像您预期的那样使用react。我不确定这是什么原因,但您应该尝试一下,看看是否能解决您的问题。

关于android - setOnKeyListener 在 galaxy s2 上不会表现出与在模拟器上相同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com