如何传递类型的值并将其转换为另一种类型?

时间:2014-01-05 19:40:00

标签: java android eclipse

我正在尝试将一个整数值从一个活动传递给另一个活动 在第二个活动中,我想将我的字符串转换为整数来进行一些计算,并将其再次转换为字符串,以便在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”时,应用程序崩溃了。

问题是什么?

由于

2 个答案:

答案 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));