2016-02-07 39 views
1

我的问题是我无法让我的EditText输入接受字母数字。这是在Android上,它为我正在处理的应用程序。我只想让它接受数字。我想创建EditText。以下是创建它们的代码。这是整个Java文件的代码。使EditText输入只接受数字不起作用

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) { 

    } 
} 

通知我设置了LBL的TYPE_CLASS_NUMBEREditText是数量,否则我也想京东方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 > 
+0

只好改变标题。拼写错误。抱歉。 – vbneil54

+0

android:inputType =“number”in xml文件editText – HourGlass

+0

我可以看到你的xml吗? –

回答

0

好吧,我有种解决方案。这是我改变的部分。 我决定不要将设置的输入包含在if语句中。现在它可以工作,但所有的编辑文本都接受小数。我必须弄清楚如何限制数量框只有数字,但现在我的工作将不得不这样做。

   txtPartMeasurement.setInputType(InputType.TYPE_CLASS_NUMBER | 
         InputType.TYPE_NUMBER_FLAG_DECIMAL); 


       // Set all the input attributes for the text boxes. 
       /** if (line == "QTY") { 
        txtPartMeasurement.setRawInputType(InputType.TYPE_CLASS_NUMBER | 
          InputType.TYPE_NUMBER_FLAG_DECIMAL); 
       } 
        else { 
        txtPartMeasurement.setRawInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); 
       } */ 
       txtPartMeasurement.setTextSize(14); 
2

android:inputType="number"在XML属性或android:inputType="numberDecimal"

android:inputType="number"只接受整型数字,android:inputType="numberDecimal"接受十进制数。您可以参考this

+0

看看OP代码,他从java代码创建* EditText * ** **而不是xml! – Rami

+0

@拉米嘛,他也可以参考我的链接。 – Tony

+1

@Tony - 如果我在我的xml文件中创建框,它可以正常工作。但就像拉米说的,我需要在java代码中创建它们。但我已经看到了链接,并在我的应用程序的另一部分中使用它。感谢您的尝试。 – vbneil54