如何在Android中的Activity之间使用Intent传递值?

时间:2012-12-24 06:13:08

标签: android

我想将一个活动类中的位置值传递给另一个...

我的代码如下:

protected void onListItemClick(ListView listView, View v, int position,
            long id) {
        switch (position) {
            case 1:
                Intent newActivity1 = new Intent(this, BucketItemActivity.class);
                newActivity1.putExtra("bucketno", position);
                startActivity(newActivity1);
                break;
            case 2:
                Intent newActivity2 = new Intent(this, BucketItemActivity.class);
                newActivity2.putExtra("bucketno", position);
                startActivity(newActivity2);
                break;
    }
}

将接收它的活动类..

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bucket_item);
        String value = getIntent().getExtras().getString("bucketno");
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(value);
        setContentView(textView);
    }

但我总是在String值中得到一个null ...

请帮忙。

7 个答案:

答案 0 :(得分:19)

替换它,

String value = getIntent().getExtras().getString("bucketno");

int value = getIntent().getExtras().getInt("bucketno");

您正在尝试传递int值但检索字符串数据。这就是你得到nullpointerException的原因。

答案 1 :(得分:12)

您可以使用:

在第一项活动(MainActivity页面)

Intent i = new Intent(MainActivity.this,SecondActivity.class); 
i.putExtra("YourValueKey", yourData.getText().toString());

然后你可以通过以下方式从第二项活动中获得: 在第二个活动(SecondActivity页面)

Intent intent = getIntent();
String YourtransferredData = intent.getExtras().getString("YourValueKey");

答案 2 :(得分:4)

String value = Integer.toString(getIntent().getExtras().getInt("bucketno"));

答案 3 :(得分:1)

Bundle extras = getIntent().getExtras();

if (extras != null) { 
    String data = intent.getExtras().getString("key").toString();
}

答案 4 :(得分:0)

使用:

String value = getIntent().getExtras().get("key").toString();

getIntent().getExtras()会给你一个Boundle。 get()方法可用于获取值。

答案 5 :(得分:0)

此外谁有不同的情绪

ItemReader

如果你把其他原语如double,boolean,int只是不要忘记输入正确的格式,同时在secont Activity中设置值

  double userDMH = Util.getInstance(TakeInfoOne.this).calculateBMH(userGender, kg, talll, currentAge, activityy);
                        Intent intentTogeneral = new Intent(TakeInfoOne.this, TakeInfoTwo.class);
                        intentTogeneral.putExtra("user_current_age",userDMH );
                        startActivity(intentTogeneral);

此处使用Bundle extras = getIntent().getExtras(); if (extras != null) { double value = extras.getDouble("user_current_age"); txt_metabolism.setText(""+value); } 键入您关注的值类型,如

extras.getDouble()

答案 6 :(得分:0)

在第一个活动中

Intent i=new Intent(getApplicationContext(),BookPractionerAppoinment.class);
i.putExtra("prac","test");
startActivity(i);

在“第二次ACT活动”中获取价值

String prac=getIntent().getStringExtra("prac);

对于序列化对象:

通过

Intent i=new Intent(getApplicationContext(),BookPractionerAppoinment.class);
 i.putExtra("prac",pract);
 startActivity(i);

获取

pract= (Payload) getIntent().getSerializableExtra("prac");