0

所以基本上,我刚刚开始 android 开发,并且正在根据 youtube 上的教程构建一个应用程序。我决定走一点点,让它按照我想要的方式进行,现在我遇到了一个错误。

我想要做的是允许 EditText 决定这个计数器应用程序的增量。这是我的代码:

Java 活动:

        counter = 0;
        reset = (Button) findViewById(R.id.reset);
        addone = (Button) findViewById(R.id.add);
        takeOne = (Button) findViewById(R.id.take);
        tvCounter = (TextView) findViewById(R.id.fullscreen_content);
        incrementer = (EditText) findViewById(R.id.number);

        final int increment = Integer.parseInt(incrementer.getText().toString());

        addone.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                counter += increment;
                tvCounter.setText("" + counter);
            }
        });

        takeOne.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                counter -= increment;
                tvCounter.setText("" + counter);
            }
        });

        reset.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                counter = 0;
                tvCounter.setText("" + counter);
            }

XML:

       <Button
            android:id="@+id/add"
            style="?buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Add One" />
        <Button
            android:id="@+id/take"
            style="?buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Take One" />

        <Button
            android:id="@+id/reset"
            style="?buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Reset" />
    </LinearLayout>

    <EditText
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>
4

3 回答 3

1
02-17 09:35:56.313: E/AndroidRuntime(3177): Caused by: java.lang.NumberFormatException: Invalid int: ""
02-17 09:35:56.313: E/AndroidRuntime(3177):     at java.lang.Integer.invalidInt(Integer.java:138)
02-17 09:35:56.313: E/AndroidRuntime(3177):     at java.lang.Integer.parseInt(Integer.java:359)
02-17 09:35:56.313: E/AndroidRuntime(3177):     at java.lang.Integer.parseInt(Integer.java:332)
02-17 09:35:56.313: E/AndroidRuntime(3177):     at 

这可能是错误并在这条线上发现

final int increment = Integer.parseInt(incrementer.getText().toString());

最好给你的EditText

 <EditText
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:ems="10"
        android:text="0" 
        android:inputType="number" >
于 2013-02-17T01:37:36.473 回答
0

它可能会崩溃,因为您的 EditText 的内容不是数字。假设这是您的 onCreate 方法,此时您不需要阅读编辑文本。在更新计数器之前,在按钮的 onClick 方法中解析 edittext 的内容。

此外,由于您不知道用户输入的文本类型,您应该在 parseInt 调用周围加上 try 和 catch 以防止应用程序在 EditText 不包含数字的情况下崩溃。

在 xml 文件中添加android:text="1"到您的 EditText。

于 2013-02-17T01:29:36.050 回答
0

你得到了空的 EditText 并试图从“”中解析 Int,你会从 Integer.parseInt(“”) 方法中得到 NumberFormatException。

只需使用 try/catch 来捕获和处理异常。

final int increment;
try {
    increment = Integer.parseInt();
} catch (NumberFormatException e) {
    // Do what you want
}
于 2013-02-17T02:45:27.787 回答