InputType=phone 不显示文本和 returns 一个空字符串
InputType=phone does not show the text and returns an empty string
我正在尝试获取 phone 数字,但 EditText
未显示数字,字符串 t
为空。如果我开始输入 + 号后跟一些数值,我只会在 edit.gettext().toString()
.
中得到 +
如果我设置 inputtype="text"
一切正常。
是bug还是什么?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.narb.test.MainActivity">
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Text typed"
/>
<EditText
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txt"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:hint="Enter text"
android:inputType="phone"
/>
</RelativeLayout>
这是我的代码:
public class MainActivity extends AppCompatActivity {
TextView txt;
EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.edit);
txt = (TextView) findViewById(R.id.txt);
edit.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String t = edit.getText().toString();
txt.setText(t);
}
return true;
}
});
}
}
我想你应该试试这个
android:inputType="number"
As Input type "number"是键盘允许切换字符,也可以输入其他特殊字符。
尝试以下对我有用的方法。
如果您正在处理输入,您应该只 return 来自 onKey 的 true。即,将 return true 移到 if 块内,将 return false 移到其他地方
edit.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String t = edit.getText().toString();
txt.setText(t);
return true;
}
return false;
}
});
If block会returntrue最后写false。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_searchview);
edit = (EditText) findViewById(R.id.edit);
txt = (TextView) findViewById(R.id.txt);
edit.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String t = edit.getText().toString();
txt.setText(t);
return true;
}
return false;
}
});
}
我正在尝试获取 phone 数字,但 EditText
未显示数字,字符串 t
为空。如果我开始输入 + 号后跟一些数值,我只会在 edit.gettext().toString()
.
如果我设置 inputtype="text"
一切正常。
是bug还是什么?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.narb.test.MainActivity">
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Text typed"
/>
<EditText
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txt"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:hint="Enter text"
android:inputType="phone"
/>
</RelativeLayout>
这是我的代码:
public class MainActivity extends AppCompatActivity {
TextView txt;
EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.edit);
txt = (TextView) findViewById(R.id.txt);
edit.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String t = edit.getText().toString();
txt.setText(t);
}
return true;
}
});
}
}
我想你应该试试这个
android:inputType="number"
As Input type "number"是键盘允许切换字符,也可以输入其他特殊字符。
尝试以下对我有用的方法。
如果您正在处理输入,您应该只 return 来自 onKey 的 true。即,将 return true 移到 if 块内,将 return false 移到其他地方
edit.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String t = edit.getText().toString();
txt.setText(t);
return true;
}
return false;
}
});
If block会returntrue最后写false。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_searchview);
edit = (EditText) findViewById(R.id.edit);
txt = (TextView) findViewById(R.id.txt);
edit.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String t = edit.getText().toString();
txt.setText(t);
return true;
}
return false;
}
});
}