0

我正在尝试编写我的第一个 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.      

}   
} 
4

1 回答 1

3

您正在尝试解析onCreate方法中的 int,这发生在用户有机会在EditText. 因此尝试解析空字符串的异常。

您必须按下按钮,然后将 int 从 中解析出来EditText,或者将侦听器附加到EditText将在输入内容时解析它。

于 2012-10-29T03:12:05.727 回答