跨活动传递信息的问题

时间:2011-08-10 08:51:41

标签: java android android-activity android-intent

我试图通过这个:

Intent i=new Intent(ctx,SpendingsDetails.class);
extras.putString("SpendingAmount", "1");
extras.putString("SpendingDescription","2");
extras.putString("SpendingDate","3");
i.putExtras(extras);
startActivityForResult(i,1);

获取信息的活动会执行以下信息..

    spendingAmount=(TextView)findViewById(R.id.spending_Sum);
spendingDetails=(TextView)findViewById(R.id.spending_Details);

Bundle extras=getIntent().getExtras();
if(extras!=null)
{
    spendingAmount.setText(extras.getString("SpendingAmount"));
    spendingDetails.setText(extras.getString("SpendingDescription"));
}

我收到的错误是应用程序无法在第一个活动屏幕上继续。我做错了什么?

5 个答案:

答案 0 :(得分:5)

像这样使用

Intent i=new Intent(ctx,SpendingsDetails.class);
    i.putExtras("SpendingAmount", "1");
    i.putExtras("SpendingDescription","2");
    i.putExtras("SpendingDate","3");
    startActivityForResult(i,1);

答案 1 :(得分:3)

你可以直接调用getStringExtra:

spendingAmount.setText(getIntent().getStringExtra("SpendingAmount"));

等等你需要的其他值。

当然,您也可以先检查一下该值是否存在:

String spending = getIntent().getStringExtra("SpendingAmount");
if(spending != null) {
  spendingAmount.setText(spending);
}
编辑:像Rasel说:

i.putExtra("SpendingAmount", "1");

起初我没有看到。

答案 2 :(得分:2)

你在哪里宣布额外服务?看看变化。

Intent i=new Intent(ctx,SpendingsDetails.class);
Bundle extras=new Bundle();
extras.putString("SpendingAmount", "1");
extras.putString("SpendingDescription","2");
extras.putString("SpendingDate","3");
i.putExtras(extras);
startActivityForResult(i,1);

答案 3 :(得分:2)

我认为你宣布了你的捆绑对象。但是没有分配内存。那就是你需要添加这段代码。

Intent i=new Intent(ctx,SpendingsDetails.class);
Bundle extras=new Bundle();// add this code and try once
extras.putString("SpendingAmount", "1");
extras.putString("SpendingDescription","2");
extras.putString("SpendingDate","3");
i.putExtras(extras);
startActivityForResult(i,1);

希望它有所帮助。

答案 4 :(得分:1)

请查看LogCat以获取异常堆栈跟踪。这是第一个看东西“不起作用”的地方。