Android Can';无法正确获取editText整数值
我是编程新手,所以我真的不知道如何解决这个问题,也不知道为什么会这样 我正在制作一个应用程序,在Main2活动中,假设用户在EditText中插入一个值,然后在用户按下按钮后,该值将变为整数并用于数学运算 问题是,当我尝试时,当我按下MainActivity中的按钮将我带到Main2活动时,应用程序崩溃 我把问题缩小到Main2Activity按钮中的编码,但不知道出了什么问题 这是Main2活动代码。你能帮助我吗?谢谢Android Can';无法正确获取editText整数值,android,Android,我是编程新手,所以我真的不知道如何解决这个问题,也不知道为什么会这样 我正在制作一个应用程序,在Main2活动中,假设用户在EditText中插入一个值,然后在用户按下按钮后,该值将变为整数并用于数学运算 问题是,当我尝试时,当我按下MainActivity中的按钮将我带到Main2活动时,应用程序崩溃 我把问题缩小到Main2Activity按钮中的编码,但不知道出了什么问题 这是Main2活动代码。你能帮助我吗?谢谢 package com.example.cabr.teste; impo
package com.example.cabr.teste;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Main2Activity extends AppCompatActivity {
public double valorhorasponta = 0;
public double valorhorascheias = 0;
public double valorhorasvazio = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView textView9 = (TextView) findViewById(R.id.textView9);
TextView textView10 = (TextView) findViewById(R.id.textView10);
TextView textView12 = (TextView) findViewById(R.id.textView12);
TextView textView14 = (TextView) findViewById(R.id.textView14);
final TextView textView11 = (TextView) findViewById(R.id.textView11);
final TextView textView13 = (TextView) findViewById(R.id.textView13);
final TextView textView15 = (TextView) findViewById(R.id.textView15);
final TextView textView17 = (TextView) findViewById(R.id.textView17);
final EditText editText1 = (EditText) findViewById(R.id.editText1);
final EditText editText2 = (EditText) findViewById(R.id.editText2);
final EditText editText3 = (EditText) findViewById(R.id.editText3);
final EditText editText4 = (EditText) findViewById(R.id.editText4);
Button button = (Button) findViewById(R.id.button);
Intent i = getIntent();
String valorpot1 = i.getStringExtra("valorpot1");
String valorpot12 = i.getStringExtra("valorpot12");
textView9.setText(valorpot1);
if (valorpot12.equals("Tarifas de médias utilizações")){
valorhorasponta = 0.3128;
textView10.setText(String.valueOf(valorhorasponta));
valorhorascheias = 0.1555;
textView12.setText(String.valueOf(valorhorascheias));
valorhorasvazio = 0.0862;
textView14.setText(String.valueOf(valorhorasvazio));
}
if (valorpot12.equals("Tarifas de longas utilizações")){
valorhorasponta = 0.2318;
textView10.setText(String.valueOf(valorhorasponta));
valorhorascheias = 0.1341;
textView12.setText(String.valueOf(valorhorascheias));
valorhorasvazio = 0.08;
textView14.setText(String.valueOf(valorhorasvazio));
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String valorquantponta1 = editText1.getText().toString();
int valorquantponta = Integer.parseInt(valorquantponta1);
String valorquantcheias1 = editText2.getText().toString();
int valorquantcheias = Integer.parseInt(valorquantcheias1);
String valorquantvazio1 = editText3.getText().toString();
int valorquantvazio = Integer.parseInt(valorquantvazio1);
String valorquantpot1 = editText4.getText().toString();
int valorquantpot = Integer.parseInt(valorquantpot1);
double valortotponta = valorhorasponta * valorquantponta;
double valortotcheias = valorhorascheias * valorquantcheias;
double valortotvazio = valorquantvazio * valorhorasvazio;
textView11.setText(String.valueOf(valortotponta));
textView13.setText(String.valueOf(valortotcheias));
textView15.setText(String.valueOf(valortotvazio));
}
});
}
}
您可以通过这种方式从EditText获取值 EditText EditText=(EditText)findViewById(R.id.EditText) String String=editText.getText().toString
int值\u from\u editText=Integer.parseInt(字符串) 您可以获得
NullPointerException
,因为valorpot1
和valorpot12
如果意图没有额外的valorpot1
和valorpot12
,则可能是null
。将null对象与某个字符串值进行比较将引发异常。要避免它:
替换:
String valorpot1 = i.getStringExtra("valorpot1");
String valorpot12 = i.getStringExtra("valorpot12");
与:
另一个可能的应用程序崩溃可能是由于从字符串到整数的转换不正确。EditText可以包含不能转换为整数的字母或双精度值。因此,您需要在使用前进行检查
使用下面提供的convertToInt
方法将String
转换为Integer
。将代码中的Integer.parseInt
替换为convertToInt
private int convertToInt(String value)
{
if (value.matches("^-?\\d+$"))
{
return Integer.parseInt(value);
}
else
{
return 0;
}
}
您可能有其他可能导致应用程序崩溃的异常。如果您向我们提供一份报告,将非常有帮助。我们不能仅凭此“应用程序崩溃”。粘贴您正在获取的日志(请=)。请同时发布日志。我的猜测是,你需要在乘以int的同时将int转换为double。
private int convertToInt(String value)
{
if (value.matches("^-?\\d+$"))
{
return Integer.parseInt(value);
}
else
{
return 0;
}
}