Intent.getExtras不起作用

时间:2014-08-07 19:58:51

标签: java android android-intent

在一个类中,我在onCreate方法之外声明了以下变量:

Double isowei2 = 9.36;  
Double iso2 = 10.54;

在onCreate方法中,我有这个:

final Intent start = new Intent(IsoAbun.this, IsoAbunCal.class);
    public void onClick(View arg0) {  
        isowei2 = 9.0;  
        iso2 = isowei2;  
        start.putExtra("iso2", iso2);  
        startActivity(start);  
    }

这两个代码在一个类中。在另一个类中,我在onCreate方法中有这个:

    Bundle b = getIntent().getExtras();
    Double iiso2 = 0.0;
    iiso2 = b.getDouble("iso2");

据我所知,它应该做的是当我点击第一个类的按钮时,它将isowei2重新设置为9.0,将iso2设置为9.0,然后创建一个名为iso2,传入iso2的值,即9.0,然后启动intent / activity。当它启动活动时,它应该做的是创建一个bundle和一个double变量,然后将iiso2设置为iso2,即9.0。我有未显示的代码显示iiso2的值,但问题是它不显示9.0,而是显示10.54。有帮助吗?

2 个答案:

答案 0 :(得分:0)

你需要在onCreate中设置这样的设置:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.<your layout>);
final Intent start = new Intent(this, <OtherClass>.class);
Button btn = (Button)findViewById(R.id.btnId);//find from your activity xml, your button Id
btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    isowei2 = 9.0;  
            iso2 = isowei2;  
            start.putExtra("iso2", iso2);  
            startActivity(start);
                    }           
            });
}

在另一个oncreate方法类中,您可以使用TextView查看它:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle b = getIntent().getExtras();
    Double iiso2 = 0.0;
    iiso2 = b.getDouble("iso2");
    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(20);
    textView.setText(iiso2.toString());
    setContentView(textView);
}

如果你没有为你的按钮分配一个id,下面是一个在你的布局xml中它的样子的例子:

 <Button
        android:id="@+id/btnId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />

答案 1 :(得分:0)

不是将数据作为intent extra传递,而是创建一个包含数据的bundle,并通过intent传递该bundle。

类似于:

Bundle bundle = new Bundle();
bundle.putDouble("key", myDouble);
startActivity(new Intent(this, NextActivity.class).putExtras(bundle));

然后在接收活动中:

Bundle bundle = getIntent().getExtras();
if (bundle != null)
    double myDouble = bundle.getDouble("key");