我正在尝试将一个整数值从一个活动传递给另一个活动 在第二个活动中,我想将我的字符串转换为整数来进行一些计算,并将其再次转换为字符串,以便在TextView中显示它。
这是我的第一个活动:
public class GetPrice extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.getprice);
final EditText et1 = (EditText) findViewById(R.id.getprice);
Button getb1 = (Button) findViewById(R.id.getbutton);
getb1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i1 = new Intent(GetPrice.this, Price1.class);
int fl1 = Integer.parseInt(et1.getText().toString());
i1.putExtra("theprice", fl1);
startActivity(i1);
}
});
这是我的第二项活动:
public class Price1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.price1);
String st1 = new String(getIntent().getExtras().getString("theprice"));
Integer int1 = Integer.valueOf(st1);
//some calculation with int1
TextView tv1 = (TextView) findViewById(R.id.price1text);
tv1.setText(String.valueOf(int1));
}
但是,当我按下“getbutton”时,应用程序崩溃了。
问题是什么?
由于
答案 0 :(得分:3)
没有堆栈跟踪和实际错误,
int fl1 = Integer.parseInt(et1.getText().toString());
是问题,String
不是整数的文本表示,或者实际上是有效的,并且:
String st1 = new String(getIntent().getExtras().getString("theprice"));
是问题所在,因为您在附加内容中存储了Integer
,现在正尝试将其作为String
(使用getInt("theprice")
代替)。
答案 1 :(得分:1)
使用Bundle.getInt(String key)
访问int fl1
课程中的GetPrice
。
Integer int1 = getIntent().getExtras().getInt("theprice");
更新为较旧的JDK。
此外,您不需要将类型之间的值重新转换为类型:
String st1 = new String(getString...);
Integer int1 = Integer.valueOf(st1);
tv1.setText(String.valueOf(int1));
应该简化为像这样的代码
String st1 = Integer.toString(getString...);
tv1.setText(st1);
甚至更好
Integer int1 = getInt...;
tv1.setText(String.valueOf(int1));