代码之家  ›  专栏  ›  技术社区  ›  narb

InputType=手机不显示文本并返回空字符串

  •  0
  • narb  · 技术社区  · 7 年前

    EditText 不显示数字和字符串 t 为空。如果我开始输入一个+号,后跟一些数字值,我在中只得到+号 edit.gettext().toString() .

    如果我设置 inputtype="text"

    是虫子还是什么?

    <?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;
                }
            });
    
        }
    }
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   Amrutha Saj    7 年前

    试试下面这对我来说很管用。

    只有在处理输入时,才应该从onKey返回true。一、 例如,将返回true移到if块内,否则返回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;
            }
        });
    
        2
  •  0
  •   Nikhil Borad    7 年前

    android:inputType="number"
    

    作为输入类型,“数字”是指键盘允许切换到字符,也允许输入其他特殊字符。

        3
  •  0
  •   Ankita    7 年前

    If块 将返回 最后写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;
                        }
                    });
                }