将整数值分配给字符串。安卓/ Java的

时间:2013-08-10 21:13:45

标签: java android string view integer

我是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权重,当我在OnAddNewClicked中将其作为inflateEditRow(null,(Integer)null)调用时,程序崩溃了。

3 个答案:

答案 0 :(得分:0)

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

Integer.valueOf(yourString);

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

答案 1 :(得分: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仅包含整数值,否则您的应用程序将崩溃。

答案 2 :(得分:0)

  1. null投射到任何类型 - 就像使用Integer一样无用。在调用inflateEditRow(null, null)之前,调用ClassCastException是相同的(除非你想捕获Integer)。

  2. 如果您想将Integer.toString()转换为仅调用String或向其添加空String intString = yourInteger + "";(“”),例如String.valueOf(anInteger)。或者您可以使用Integer 如果您要从String使用Integer.parseInt(aString)解析NumberFormatException。但是,您可能需要检查{{1}}。