第一个Android应用程序 - 无法将EditText转换为整数值

时间:2012-10-29 03:02:44

标签: android parseint

我正在尝试编写我的第一个Android应用。它将在EditText字段中由用户输入数字,将其转换为整数,然后查找因子。我想从之前编写的Java程序中移植它。我有一些存根工作到我有一个UI,但我还没有移植将找到因素的代码。我试图将EditText转换为整数。如果我插入以下任一行,程序将在模拟器中崩溃。 Log.Cat说,“由NumberFormatExcepion引起:无法解析''作为整数。”

任何建议都表示赞赏。

userNumber是从EditText字段中获取的值的名称,EditText字段也称为userNumber。我不知道这是不是很糟糕。我想将userNumber的值赋给整数值userInt。 userInt将被考虑在内。

这些方法中的任何一个都会导致问题:

userNumber = (EditText) findViewById(R.id.userNumber);
userInt = Integer.parseInt(userNumber.getText().toString());


Integer userInt = new Integer(userNumber.getText().toString());

XML的EditText块如下所示:

<EditText
    android:id="@+id/userNumber"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="number" >

    <requestFocus />
</EditText>

以下是该课程的相关代码:

public class AndroidFactoringActivity extends Activity {

// Instance Variables
EditText userNumber;
Button factorButton;
TextView resultsField;
int factorResults = 1;
int userInt = 0;  // This comes out if using Integer userInt

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    resultsField = (TextView) findViewById(R.id.resultsField);
    factorButton = (Button) findViewById(R.id.factorButton);
    userNumber = (EditText) findViewById(R.id.userNumber); 
                // userNumber is also the name of the EditText field.

    // userInt = Integer.parseInt(userNumber.getText().toString());

    // Integer userInt = new Integer(userNumber.getText().toString());

    resultsField.append("\n" + String.valueOf(userInt)); 
               //Later, this will be factorResults, not userInt.
               // Right now, I just want it to put something on the screen.      

}   
} 

1 个答案:

答案 0 :(得分:3)

您正在尝试解析onCreate方法中的int,该方法在用户有机会在EditText中输入任何内容之前发生。因此尝试解析空字符串时会出现异常。

你必须按下一个按钮,然后从EditText中解析出int,或者将一个监听器附加到EditText,当你输入内容时会解析它它