gpt4 book ai didi

java - 只有在单击关联的按钮两次后,才能通过 EditText 显示正确的输出

转载 作者:行者123 更新时间:2023-12-01 15:22:44 27 4
gpt4 key购买 nike

我正在编写一个小代码来将一种货币转换为另一种货币。该应用程序通过 EditText 接受两个值(配置为接受十进制数字)- 1) 本国或国外货币(如果填写一个,则另一个字段留空)2) 汇率。

这是代码:

package kk.currency;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class CurrencyActivity extends Activity {
/** Called when the activity is first created. */

EditText inpval1;
EditText inpval2;
EditText rate;

int v1 = 0;
int v2 = 0;
int r = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public void btnclick(View view) {
try {
inpval1 = (EditText)findViewById(R.id.away);
v1 = Integer.parseInt(inpval1.getText().toString());

inpval2 = (EditText)findViewById(R.id.home);
v2 = Integer.parseInt(inpval2.getText().toString());

rate = (EditText)findViewById(R.id.rate);
r = Integer.parseInt(rate.getText().toString());
}
catch (Exception e) {
Toast.makeText(this, "Empty field", Toast.LENGTH_SHORT).show();
}
finally {
v1 = v2 * r;

EditText destination = (EditText)findViewById(R.id.away);
destination.setText(Integer.toString(v1));
}
}
}

问题是,单击与“btnclick”关联的按钮后,无论输入什么,留空的字段(以及应该显示答案的位置)都会显示 0。但再次单击时,会显示正确答案。

如果我在应该留空的字段中输入任何值,则第一次会显示正确的值。

可能是什么问题?!

在删除“最后”并将其内容放入“尝试”中时,单击按钮时我什至没有得到任何响应。

此外,在应用程序执行期间,LogCat 完全为空。

这是某人要求的应用程序布局。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dip"
android:layout_marginLeft="5dip"
android:text="@string/away"
android:textStyle="bold"
android:textSize="20dip"
android:textColor="#4199ae" />

<EditText
android:id="@+id/away"
android:digits="0123456789."
android:inputType="number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:hint="@string/c1" />

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dip"
android:layout_marginLeft="5dip"
android:text="@string/conv"
android:textStyle="bold"
android:textSize="20dip"
android:textColor="#4199ae" />

<EditText
android:id="@+id/rate"
android:digits="0123456789."
android:inputType="number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:hint="@string/rate" />

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dip"
android:layout_marginLeft="5dip"
android:text="@string/home"
android:textStyle="bold"
android:textSize="20dip"
android:textColor="#4199ae" />

<EditText
android:id="@+id/home"
android:digits="0123456789."
android:inputType="number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:hint="@string/c2" />

<Button
android:id="@+id/but"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dip"
android:text="@string/buttxt"
android:onClick="btnclick" />

最佳答案

我在 Reddit 上的回复:

您的问题是因为您没有处理用户可能拥有的各种可能的输入。第一次,在这条线上

v1 = Integer.parseInt(inpval1.getText().toString());

值(value)

inpval1.getText().toString()

返回“”,无法转换为整数,因此导致异常。您应该会看到出现“空字段”Toast。之后,就到了最后一步,但是因为v2和r仍然是0,所以它把0放入v1中,并将0放入离开的EditText中。

下次运行时,它会从 Away EditText 获取 0,并且可以正常工作。你知道如何进行调试吗?如果您使用的是 Eclipse,请双击最左侧灰色/蓝色栏中要暂停的行,这将放置一个小断点图标,程序将在那里停止。

因此,如果您在开始时删除对 EditText 值的获取,它应该可以工作。另外,您还想考虑在此处实现一些其他建议,因为每次单击按钮时都会获取指向控制 View 的指针,从而完成一些多余的工作。

祝你好运!

关于java - 只有在单击关联的按钮两次后,才能通过 EditText 显示正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651584/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com