今天参考网上的教程写了一个简单的只能进行两个数乘法的小程序,第一次用Java进行安卓开发,当中遇到了不少问题,当然现在在手机上调试后只生成了一个MainActivity而且闪退,咨询相关大神后需要查看logcat(日志),折腾了几天浪费了很多时间,原因就是Interger.parseInt将字符串转为int型要先判断字符串是否为空,setText()如果里面是int型会导致无法找到资源而闪退,所以这段代码的两个漏洞导致了程序闪退。调试代码的过程着实很花时间,作为初学者真应当虚心向会的人请教,这个过程会加强你对代码的理解,别人的代码也只有经过你的思考才能变成你的。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
resultView = findViewById(R.id.result);
//获得传递的值
Intent intent = getIntent();
String factorOneStr = intent.getStringExtra("one");
String factorTwoStr = intent.getStringExtra("two");
if (!TextUtils.isEmpty(factorOneStr)) {//判断是否为空
factorOneInt = Integer.parseInt(factorOneStr);//将字符串转为int型
}
if (!TextUtils.isEmpty(factorOneStr)) {
factorOneInt = Integer.parseInt(factorOneStr);
}
int result = factorOneInt * factorTwoInt;
String resultString= Integer.toString(result);
resultView.setText( resultString);//显示文本}
Intent intent = new Intent(MainActivity.this,ResultActivity.class);
getIntent().putExtra("one", factorOneStr);
getIntent().putExtra("two", factorTwoStr);
startActivity(intent);
这段代码的作用是将第一个Activity的两个字符串传递到下一个Activity,这是使用的显式Intent,MainActivity.this作为上下文,传入Result.class作为目标活动。
Intent intent = getIntent();
String factorOneStr = intent.getStringExtra("one");
String factorTwoStr = intent.getStringExtra("two");
同样在ResultActivity必须有上面一段接收的代码。