接触Android的不久,今天碰到一个很棘手的问题,现将代码贴上,恳请高手赐教!!!!
Java代码:
package android.question;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
public class TestActivity extends Activity implements OnKeyListener {
private EditText text1;//长文本框
private EditText text2;//短文本框,只作比较用
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text1 = (EditText) this.findViewById(R.id.widget44);
text1.setOnKeyListener(this);//长文本框注册了OnKeyListener
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent e) {
if (v.isFocusable() && (v instanceof EditText)
&& keyCode == KeyEvent.KEYCODE_DEL) {
EditText temp = (EditText) v;
String text = temp.getText().toString();
if (text.length() > 0) {
String afterText = text.substring(0, text.length() - 1);
temp.setText(afterText);//为何点击一次软键盘上的Del健,会删掉长文本框后面的的两个字符呢?应该是一个才对呀?
}
}
return true;
}
}
layout的main.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/widget0"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditText android:id="@+id/widget44" android:layout_width="220px"
android:layout_height="38px" android:textSize="18sp" android:gravity="left"
android:layout_x="4px" android:layout_y="32px" android:imeOptions="actionGo"
android:ellipsize="end" android:drawablePadding="4px">
</EditText>
<EditText android:id="@+id/widget45" android:layout_width="90px"
android:layout_height="38px" android:imeOptions="actionSearch"
android:textSize="18sp" android:typeface="serif" android:textStyle="bold"
android:gravity="center" android:layout_x="226px" android:layout_y="32px">
</EditText>
</AbsoluteLayout>
长文本框text1跟短文本框text2相比,除了xml中的基本定义不同外,再就是text1注册了OnKeyListener,text2没有做任何处理,text2能直接响应软键盘的Del键来删除字符,而text1也通过OnKey方法中截取字符串来响应软键盘的Del键进行删除操作,但在Android1.5的SDK中,每点击一下Del键,会删除两个字符,貌似OnKey方法被执行了两次,如果text1在OnKey方法中不进行字符串的截取,在软键盘中点击Del键没有任何反应,为什么会这样啊?高手赐教!!!
先奉上40分,解决后另有追加
Java代码:
package android.question;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
public class TestActivity extends Activity implements OnKeyListener {
private EditText text1;//长文本框
private EditText text2;//短文本框,只作比较用
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text1 = (EditText) this.findViewById(R.id.widget44);
text1.setOnKeyListener(this);//长文本框注册了OnKeyListener
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent e) {
if (v.isFocusable() && (v instanceof EditText)
&& keyCode == KeyEvent.KEYCODE_DEL) {
EditText temp = (EditText) v;
String text = temp.getText().toString();
if (text.length() > 0) {
String afterText = text.substring(0, text.length() - 1);
temp.setText(afterText);//为何点击一次软键盘上的Del健,会删掉长文本框后面的的两个字符呢?应该是一个才对呀?
}
}
return true;
}
}
layout的main.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/widget0"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditText android:id="@+id/widget44" android:layout_width="220px"
android:layout_height="38px" android:textSize="18sp" android:gravity="left"
android:layout_x="4px" android:layout_y="32px" android:imeOptions="actionGo"
android:ellipsize="end" android:drawablePadding="4px">
</EditText>
<EditText android:id="@+id/widget45" android:layout_width="90px"
android:layout_height="38px" android:imeOptions="actionSearch"
android:textSize="18sp" android:typeface="serif" android:textStyle="bold"
android:gravity="center" android:layout_x="226px" android:layout_y="32px">
</EditText>
</AbsoluteLayout>
长文本框text1跟短文本框text2相比,除了xml中的基本定义不同外,再就是text1注册了OnKeyListener,text2没有做任何处理,text2能直接响应软键盘的Del键来删除字符,而text1也通过OnKey方法中截取字符串来响应软键盘的Del键进行删除操作,但在Android1.5的SDK中,每点击一下Del键,会删除两个字符,貌似OnKey方法被执行了两次,如果text1在OnKey方法中不进行字符串的截取,在软键盘中点击Del键没有任何反应,为什么会这样啊?高手赐教!!!
先奉上40分,解决后另有追加