以下是XML和Java代码段:
<EditText android:id="@+id/paper_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Select Paper"
android:maxLength="1"
android:inputType="phone"
android:onClick="getPaper"/>
public void getPaper(View view){
EditText paperText = findViewById(R.id.paper_text);
paper = paperText.getText().toString();
}
因此,如果按下提示,键盘会显示,我输入的数字为&#34; 1&#34;。 (我只需要整数,所以我认为我将类型设置为&#34;数字&#34;或&#34;手机&#34;,但所有类型都会出现问题。)当我按下返回时关闭键盘,数字不会存储在变量&#34; paper&#34;中。 (我用调试器检查)。但是,如果我再次打开键盘,请按退格键并键入任何数字,然后存储EditText的上一个实例,在本例中为1。
总而言之,如果我一个接一个地输入以下数字,这就是存储的内容:
输入:2,3,3,1,2
商店:空白,2,3,3,1
答案 0 :(得分:0)
您可以使用addTextChangedListener
代替onClick()
试试这个
EditText paperText = findViewById(R.id.paper_text);
paperText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
String paper = paperText.getText().toString().trim();
Toast.makeText(MainActivity.this, "" + paper, Toast.LENGTH_SHORT).show();
}
@Override
public void afterTextChanged(Editable editable) {
}
});
从android:onClick="getPaper"
EditText
<EditText android:id="@+id/paper_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Select Paper"
android:maxLength="1"
android:inputType="phone"
/>
答案 1 :(得分:0)
通过查看您提供的代码段,您似乎已在编辑文本中设置了onclicklistner。因此,当您第一次点击编辑文本时它是空白时,您的第一个数字为空白,然后存储剩余的数字。 的 FYI 强> 您在onclick属性中提到的方法将View作为输入参数参数,这与设置onclick或onclicklistner的视图相同。在你的情况下它是edittext,所以不需要编写findViewById(),因为这会降低你的应用程序性能。
答案 2 :(得分:0)
正如其他人所指出的那样,不要使用android:onClick
。想想这个事件何时被触发。只有当用户点击/点击EditText时才会被触发(在键盘上输入不是点击事件)。
当您订阅onClick侦听器时,方法处理程序仅在您单击时被调用(在您的情况下,使用后退按钮关闭键盘,然后再次点击EditText以开始键入)。 / p>
另一方面,如果您订阅TextChangeListener
,则每次EditText
保留的文字发生变更时都会收到回调。
希望让事情更容易理解。确保始终阅读javadocs方法或至少Android文档。
我的猜测是,您希望用户键入,然后按一个按钮对键入的文本执行某些操作。因此,只需在布局中添加Button
和EditText
,然后订阅按钮的onClick
即可根据EditText
的值执行操作。