我是 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(""); } } }); } }
如有任何帮助,我们将不胜感激。 谢谢,阿尔纳尔。
最佳答案
你的做法
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 - 编辑文本到 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762480/