通过意图传递一个数字,但App force关闭
问题描述:
我做了一个简单的Android程序,计算两个数字并使用Intent机制在第二个屏幕上显示结果...但问题是应用程序是强制关闭,当我点击计算移动到第二个屏幕.. 我所注册的活动清单文件和处理字符串值时应用效果很好..通过意图传递一个数字,但App force关闭
第一屏
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
int a;
int b;
int sum;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText num1 = (EditText) findViewById(R.id.editText1);
final EditText num2 = (EditText) findViewById(R.id.editText2);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
解析,在文本字段读出值到整数
a = Integer.parseInt(num1.getText().toString());
b = Integer.parseInt(num2.getText().toString());
sum = a+b;
我在这里开始的明确意图与和
Intent intent = new Intent(MainActivity.this, Second.class);
intent.putExtra("just",sum);
startActivity(intent);
}
});
}
}
第二个屏幕
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Second extends Activity {
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
我在这里指检索与已在第一类
使用的密钥的意图总和TextView text = (TextView) findViewById(R.id.textView2);
text.setText(getIntent().getExtras().getInt("just"));
}
}
答
没有你的日志猫我不能确定它没有崩溃之前,但当你u盘上这一行文字:
text.setText(getIntent().getExtras().getInt("just"));
你实际上调用this方法定义:
public final void setText (int resid)
因为你给它传递INT从getInt
调用返回。这是寻找一个资源标识符(这大概不存在,因此崩溃 - 虽然我不能确定没有你的logcat输出,它不会更早崩溃)。
你需要做的就是让INT的字符串值:
text.setText(String.valueOf(getIntent().getExtras().getInt("just")));
答
尝试做这样的事情
TextView text = (TextView) findViewById(R.id.textView2);
int sum = getIntent().getExtras().getInt("just");
text.setText(String.valueOf(sum));
setText()
正在寻找这个值getIntent的resource id
()getExtras。 ().getInt( “只是”)。您需要获取您传递的int
的String
值。
此外,你应该围绕你的解析在try/catch
或者做一些错误的情况下,检查进入一个非整数
try
{
a = Integer.parseInt(num1.getText().toString());
b = Integer.parseInt(num2.getText().toString());
sum = a+b;
}
catch (NumberFormatException e)
{
Log.e("TAG", "You're numbers are not real numbers :\\");
}
显然,你不想只是记录异常但打印一条错误信息或其他相关的东西
似乎你正在获取此行的'ResourceNotFoundException' coz'text.setText(getIntent()。getExtras()。getInt(“just”))''。当向“TextView”显示数字时,总是对'String'进行显式转换。 – Geros
发布错误日志。 –