0

我是 Java 和 Android 的新手,我正在开发一个程序,它连续有两个 EditText。第一个edittext我想成为一个字符串,第二个是分配给该字符串的整数。

更具体地说,用户输入 Homework 和 15,我希望保存这个数字,以便将来用户在 Homework 中输入带有值的作业时,该值乘以 15。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

        <EditText
             android:id="@+id/register_assign_edit"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:gravity="center_horizontal"
             android:hint="@string/example_assign"
             android:singleLine="true"
             android:inputType="textCapWords"
             android:layout_weight="1">
         </EditText>

        <EditText
             android:id="@+id/register_weight_edit"
             android:layout_width="fill_parent"
             android:layout_weight="1"
             android:layout_height="wrap_content"
             android:hint="@string/example_weight"
             android:layout_marginLeft="3dp"
             android:gravity="center_horizontal"
             android:inputType="number"
             android:singleLine="true"
             android:maxLength="2">
         </EditText>        

</LinearLayout> 

这是我的xml文件

这是我的 .java 文件

public void onAddNewClicked(View v){
        inflateEditRow(null, null);
        v.setVisibility(View.GONE);
    }

    private void inflateEditRow(String name, String name1){
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View rowView = inflater.inflate(R.layout.new_class, null);

        final EditText register_assign = (EditText) rowView.findViewById(R.id.register_assign_edit);
        final EditText register_weight = (EditText) rowView.findViewById(R.id.register_weight_edit);

        if (name != null && !name.isEmpty()) {
            register_assign.setText(name);
            register_weight.setText(name1);
        } else {
            mExclusiveEmptyView = rowView;
        }
          mContainerView.addView(rowView, mContainerView.getChildCount()-1);
    }

我试图将 String name2 的参数更改为 Integer weight,当我在 OnAddNewClicked 中将其调用为 inflateEditRow(null, (Integer) null) 时,程序崩溃了。

4

3 回答 3

0
  1. 转换null为任何类型 - 就像你做的那样Integer是没用的。在调用它之前调用inflateEditRow(null, null)是相同的(除非你想钓鱼ClassCastException)。

  2. 如果您想将 an 转换Integer为仅调用Integer.toString()或向其附加一个空String(""),例如String intString = yourInteger + "";. 或者你可以使用String.valueOf(anInteger).
    如果你想解析一个Integerfrom Stringuse Integer.parseInt(aString)。但是,您可能需要检查NumberFormatException.

于 2013-08-10T21:28:26.697 回答
0

要转换String包含预期整数值的 a,请使用:

Integer.valueOf(yourString);

请记住,您必须尝试捕获您的转换,因为如果原始String不包含有效的整数值,NumberFormatException则会抛出 a。

于 2013-08-10T21:17:34.940 回答
0

只需使用整数并像这样设置 EditText:

 private void inflateEditRow(String name, int number) {

    //... your code

    register_weight.setText(""+number);
    //... your code
 }

如果要从 EditText 中获取 Integer 值,请调用

int myinteger = Integer.valueOf(edittext.getText().toString());

但请确保 EditText 仅包含整数值,否则您的应用程序将崩溃。

于 2013-08-10T21:18:52.677 回答