Android 应用计算错误并崩溃
Android app calculation error and crash
伙计们,我在这里尝试通过从 edittext 的 然后将 then 转换为 int 并进行加法,然后显示它。
我认为代码是错误的,因为当我尝试 运行 这个应用程序崩溃时,如果我删除我标记为“//error”的那 3 行,它不会崩溃,但该功能仍然不会工作。
你能帮我吗??
package com.example.bibiwars.skills;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Age extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_age);
Button getage = (Button) findViewById(R.id.getage);
EditText ddtext = (EditText) findViewById(R.id.dd);
String dds = ddtext.getText().toString();
final int dd = Integer.parseInt(dds); //error
EditText mmtext = (EditText) findViewById(R.id.mm);
String mms = mmtext.getText().toString();
final int mm = Integer.parseInt(mms); //error
EditText yyyytext = (EditText) findViewById(R.id.yyyy);
String yyyys = yyyytext.getText().toString();
final int yyyy = Integer.parseInt(yyyys); //error
final TextView output = (TextView) findViewById(R.id.output);
getage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
output.setText("you wrote:" + (dd + mm + yyyy));
}
});
}}
您必须在填充后检索 EditText
的值。您无法在 onCreate
中确保这一点,因为您试图在视图启动后立即检索值,并且用户没有机会在 EditText
.
中输入这些值
检索 onClick
中 EditText
的值:
public void onClick(View v) {
String dds = ddtext.getText().toString();
final int dd = Integer.parseInt(dds); //error
String mms = mmtext.getText().toString();
final int mm = Integer.parseInt(mms); //error
String yyyys = yyyytext.getText().toString();
final int yyyy = Integer.parseInt(yyyys);
output.setText("you wrote:" + (dd + mm + yyyy));
}
试试这个
public class Age extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_age);
Button getage = (Button) findViewById(R.id.getage);
EditText ddtext = (EditText) findViewById(R.id.dd);
EditText mmtext = (EditText) findViewById(R.id.mm);
EditText yyyytext = (EditText) findViewById(R.id.yyyy);
final TextView output = (TextView) findViewById(R.id.output);
getage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String dds = ddtext.getText().toString();
int dd = Integer.parseInt(dds);
String mms = mmtext.getText().toString();
int mm = Integer.parseInt(mms);
String yyyys = yyyytext.getText().toString();
int yyyy = Integer.parseInt(yyyys);
output.setText("you wrote:" + (dd + mm + yyyy));
}
});
}}
也在将 String
转换为 Int
之前检查是否为 null
if (!TextUtils.isEmpty(yyyys))
{
int yyyy = Integer.parseInt(yyyys);
}
编辑
在 onCreate()
方法中,没有填充数据,所以它总是抛出 NullPointerException
或 NumberFormatException
- 正如 [=25 评论中所说=]@ Roberto Tellez Ibarra
伙计们,我在这里尝试通过从 edittext 的 然后将 then 转换为 int 并进行加法,然后显示它。 我认为代码是错误的,因为当我尝试 运行 这个应用程序崩溃时,如果我删除我标记为“//error”的那 3 行,它不会崩溃,但该功能仍然不会工作。 你能帮我吗??
package com.example.bibiwars.skills;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Age extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_age);
Button getage = (Button) findViewById(R.id.getage);
EditText ddtext = (EditText) findViewById(R.id.dd);
String dds = ddtext.getText().toString();
final int dd = Integer.parseInt(dds); //error
EditText mmtext = (EditText) findViewById(R.id.mm);
String mms = mmtext.getText().toString();
final int mm = Integer.parseInt(mms); //error
EditText yyyytext = (EditText) findViewById(R.id.yyyy);
String yyyys = yyyytext.getText().toString();
final int yyyy = Integer.parseInt(yyyys); //error
final TextView output = (TextView) findViewById(R.id.output);
getage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
output.setText("you wrote:" + (dd + mm + yyyy));
}
});
}}
您必须在填充后检索 EditText
的值。您无法在 onCreate
中确保这一点,因为您试图在视图启动后立即检索值,并且用户没有机会在 EditText
.
检索 onClick
中 EditText
的值:
public void onClick(View v) {
String dds = ddtext.getText().toString();
final int dd = Integer.parseInt(dds); //error
String mms = mmtext.getText().toString();
final int mm = Integer.parseInt(mms); //error
String yyyys = yyyytext.getText().toString();
final int yyyy = Integer.parseInt(yyyys);
output.setText("you wrote:" + (dd + mm + yyyy));
}
试试这个
public class Age extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_age);
Button getage = (Button) findViewById(R.id.getage);
EditText ddtext = (EditText) findViewById(R.id.dd);
EditText mmtext = (EditText) findViewById(R.id.mm);
EditText yyyytext = (EditText) findViewById(R.id.yyyy);
final TextView output = (TextView) findViewById(R.id.output);
getage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String dds = ddtext.getText().toString();
int dd = Integer.parseInt(dds);
String mms = mmtext.getText().toString();
int mm = Integer.parseInt(mms);
String yyyys = yyyytext.getText().toString();
int yyyy = Integer.parseInt(yyyys);
output.setText("you wrote:" + (dd + mm + yyyy));
}
});
}}
也在将 String
转换为 Int
之前检查是否为 null
if (!TextUtils.isEmpty(yyyys))
{
int yyyy = Integer.parseInt(yyyys);
}
编辑
在 onCreate()
方法中,没有填充数据,所以它总是抛出 NullPointerException
或 NumberFormatException
- 正如 [=25 评论中所说=]@ Roberto Tellez Ibarra