gpt4 book ai didi

java - EditText 到 Int

转载 作者:搜寻专家 更新时间:2023-11-01 07:37:29 25 4
gpt4 key购买 nike

我是 Java 和 Android 开发的新手,所以我决定制作一个简单的应用程序,它包含两个字段并将它们放在一个简单的数学方程式中。但是,我必须先将 EditText 转换为 Int,然后才能对它们进行任何数学运算,对吧?在 XML 文件中,我将两个 EditText 都设置为 android:inputType="number"。我的尝试是这样的:

  final EditText height = (EditText) findViewById (R.id.height);
String heightString = height.getText().toString();
final int heightInt = Integer.parseInt(heightString);

  final EditText height = (EditText) findViewById (R.id.height);
final int heightInt = Integer.parseInt(height.getText().toString());

我也在这两种情况下尝试了 Integer.valueOf,但它总是在我运行它时强制关闭我的应用程序,如果我注释掉 int heightInt,它不会强制关闭。

完整代码如下:

package com.body.calculator;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

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



@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView results = (TextView) findViewById(R.id.results);
final EditText height = (EditText) findViewById (R.id.height);
String heightString = height.getText().toString();
final int heightInt = Integer.parseInt(heightString);
final EditText weight = (EditText) findViewById (R.id.weight);
final Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
Button submit_bmi = (Button) findViewById(R.id.submit_bmi);
submit_bmi.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
if (height.getText().toString().equals("") && weight.getText().toString().equals("")) {
results.setText("Both fields are empty");
vib.vibrate(100);
}
else if (height.getText().toString().equals("")) {
results.setText("Height is empty");
vib.vibrate(100);
}
else if (weight.getText().toString().equals("")) {
results.setText("Weight is empty");
vib.vibrate(100);
}
else {
results.setText("");
}
}


});

}
}

如有任何帮助,我们将不胜感激。谢谢,Arnar。

最佳答案

你的方法

  final EditText height = (EditText) findViewById (R.id.height);
String heightString = height.getText().toString();
final int heightInt = Integer.parseInt(heightString);

是正确的,但您是在 onCreate 方法中直接调用它。这意味着它们会在应用程序启动时立即被调用,甚至在用户能够执行任何操作之前。因此,这些值始终为空,这仅仅是因为用户还没有进行任何更改。

当您稍后在 onClick 中使用这些值时(这是正确的),由于早期初始化,它们仍然是空的。

试着把这个部分:

String heightString = height.getText().toString();
final int heightInt = Integer.parseInt(heightString);

onClick 方法开始之后但在 if/else 语句之前,如下所示:

public void onClick(View v) {
String heightString = height.getText().toString();
final int heightInt = Integer.parseInt(heightString);

// Your statements

}

关于java - EditText 到 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762480/

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