在活动A到C之间传输数据?

时间:2011-11-24 12:20:03

标签: android

我想将一个整数值从活动A传递给B,再传给C. A包含卡路里,B指定你的运动方式,C计算你的最终卡路里摄入量是默认方式;但数据不会转移到活动C。

Intent i = new Intent(getApplicationContext(), ActivityC.class);

Bundle extras = new Bundle();
i.putExtras(extras); 
extras.putDouble("clllo", calories);
startActivity(new Intent("com.ti7a.fitness.ActivityB"));

然后在activityC:

double value=1.54354;

Bundle extras = getIntent().getExtras();

if(extras!=null){

value = extras.getDouble("clllo"); 
               }
        }

4 个答案:

答案 0 :(得分:1)

嗯,我不确定你是怎么想的。在您的第一个代码示例(活动A)中,您永远不会使用i Intent或extras Bundle。您如何期望将这些转移到活动C?如果您在Eclipse中编写代码,那么您还应该获得“变量永不读取”警告。

你应该首先将值传递给Activity B,然后从那里传递给Activity C.没有办法直接传递这些值(除了将它们存储到文件/数据库中,但对于这个用例来说太复杂了) )。

答案 1 :(得分:1)

您可以使用应用程序上下文来保存数据。

使用应用上下文的方式。

扩展'Application'类并添加一个属性来保存不同活动所需的不同数据。因此,在您的活动中,您可以访问应用程序上下文并获取数据。由于应用程序上下文是单例,因此它将是每个活动中的相同实例。

MyApplication appContext = (MyApplication) getApplicationContext();
appContext.data= YOUR DATA;

在任何其他活动中,您都可以以相同的方式访问该数据。

MyApplication appContext = (MyApplication) getApplicationContext();

您还需要添加

android:name=".MyApplication"

清单文件中的'application'标记。

答案 2 :(得分:0)

这样做 在活动

Intent myIntent = new Intent(A.this, C.class);
myIntent.putExtra("clllo", calories);
startActivity(myIntent);

在活动中

Intent mIntent = getIntent();
double cal = mIntent.getDoubleExtra("clllo", 1.54354);

答案 3 :(得分:-2)

您是否修改了Manifest,添加了第二个活动?