java - 使 EditText 输入只接受数字不起作用

标签 java android android-edittext

我的问题是我无法让我的 EditText 输入不接受字母数字。这是在 Android 上,它适用于我正在开发的应用程序。我只希望它接受数字。

我即时创建了 EditText。下面是创建它们的代码。这是整个 Java 文件的代码。

public class PartDetail extends Activity implements View.OnClickListener{

    private final int NUM_COL = 2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.part_detail);
        Bundle bundle = getIntent().getExtras();
        String btnName = bundle.getString("btnNameStored");
        String btnOrig = bundle.getString("btnOrig");

        TextView textView = (TextView) findViewById(R.id.txtBtnPushed);
        textView.setText(btnOrig);
        BufferedReader reader;
        InputStream is = null;

        // Get the name of the part picked and then grab the dimensions that are needed for that
        // part.

        try {

            is = getAssets().open(btnName);

            reader = new BufferedReader(new InputStreamReader(is));

            String line = reader.readLine();
            int lineLength = (line.length());

            //Used for debugging ---------------------------
            //System.out.println(" -- Text on Button --  " + btnName + " -- Line Length -- " +
            //        lineLength);
            // ------------------------------------

            TableLayout table = (TableLayout) findViewById(R.id.tblLayoutContent);

            while (line != null){

                TableRow tblRow = new TableRow(this);
                tblRow.setPadding(5, 30, 5, 5);
                table.addView(tblRow);
                line = line.toUpperCase();

                // sets the max number of col to 2 and iterates through the number of lines.
                // filling each cell with a Text Box with the name of each dimension of the part
                // that was picked.

                for (int col = 0; col < NUM_COL; col++) {
                    //This is the label of what measurement needs to be enter.
                    TextView lblName = new TextView(this);
                    // This is the number you enter for the measurement.
                    EditText txtPartMeasurement = new EditText(this);

                    // Set all the input attributes for the text boxes.
                    if (line == "QTY") {
                        txtPartMeasurement.setInputType(InputType.TYPE_CLASS_NUMBER);
                    }
                        else {
                        txtPartMeasurement.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
                    }

                    txtPartMeasurement.setTextSize(14);

                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                        txtPartMeasurement.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_END);
                    }
                    txtPartMeasurement.setEnabled(true);

                    // Set all the input attributes for the labels of what needs to be entered.
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                        lblName.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
                    }
                    lblName.setBackgroundColor(getResources().getColor(R.color.colorPartMeasurements));
                    lblName.setFocusable(true);
                    lblName.setText(line);
                    lblName.setTextSize(14);

                    // Add the labels and text boxes to the grid.
                    tblRow.addView(lblName);
                    tblRow.addView(txtPartMeasurement);

                    // Get the next line in the file if there one.
                    line = reader.readLine();
                }
            };

        }
        catch (IOException e) {
            //Used for debugging --------------------------------------------
            //System.out.println("In the catch of the On Catch in PartDetail  --  " + btnName);
            // ----------------------------------------------------------
            e.printStackTrace();
        }
    }

    @Override
    public void onClick(View v) {

    }
}

请注意,我将 EditText 的 lbl 的 TYPE_CLASS_NUMBER 设置为 QTY,否则我希望它为 boe TYPE_NUMBER_FLAG_DECIMAL

但这似乎不起作用。我已经在我的模拟器和我的真手机上试过了。不行。请让我知道我做错了什么。 谢谢。

这是 xml。请记住,我是即时创建大部分对象的。

  <?xml version="1.0" encoding="utf-8"?>
     <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ~ Copyright (c) 2016. Unless otherwise noted, all my code is open source
-->

<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
          android:layout_width = "match_parent"
          android:layout_height = "match_parent" >

<TextView
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "New Text"
    android:id = "@+id/txtBtnPushed"
    android:textSize = "42sp"
    android:layout_alignParentTop = "true"
    android:layout_centerHorizontal = "true" />

<ImageView
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:id = "@+id/imgPartPicked"
    android:layout_below = "@+id/txtBtnPushed"
    android:layout_centerHorizontal = "true"
    android:src = "@mipmap/straight_tap"
    android:minWidth = "150dp"
    android:minHeight = "150dp" />
<ScrollView
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:layout_below = "@+id/imgPartPicked"
    android:layout_alignParentLeft = "true"
    android:layout_alignParentStart = "true">

    <TableLayout
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:stretchColumns="*"
        android:id = "@+id/tblLayoutContent">
    </TableLayout >

</ScrollView >
</RelativeLayout >

最佳答案

在您的 xml 属性中写入 android:inputType="number"android:inputType="numberDecimal"

android:inputType="number" 只接受整数,android:inputType="numberDecimal" 接受十进制数。

您可以引用this .

关于java - 使 EditText 输入只接受数字不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35256185/

相关文章:

java - 系统代理设置,Java

Java和Cucumber如何复用多线程场景

android - 开始 Activity 在堆栈上添加另一个 Activity

android - 自定义评级栏?

java - 如何使用 showDialog(id) 更新 AlertDialog 内容

android - 当我使用 BackgroundColorSpan 突出显示 EditText 内容时,光标不可见

java - 带流的线程

java - JPA 仅选择每个项目的最近日期

java - 当 EditText 输入为空时 Android 应用程序崩溃

java - NullPointerException - edittext.gettext()