在android活动之间传递数据

Passing data between activities android

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do I pass data between activities in Android?

几天来,我一直在敲桌子试图解决这个问题。 我是Java和Android平台的新手,我正在编写我的第二个应用程序。 简而言之,我希望用户在第一个活动中输入一些信息。 然后,该活动接受这些输入并运行一系列数学计算,然后在单独的活动中将结果显示在几个editTexts中。 在我看来,应用程序接受输入,运行计算,然后将它们存储在一些变量中。 然后需要将变量传递给第二个活动,然后显示结果。 我有大部分应用程序编码,如果我保持输入并在一个活动中显示结果,我可以让它正常工作。 关于如何让显示的结果显示在另一个活动上的任何想法? 这里的任何方向都非常感谢。


这可以通过使用意图来完成。其中一个使用Intent是在活动之间传递数据。在您的场景中,您需要做的是

步骤1

从用户获取输入后,进行计算,存储结果
变量
捆绑您正在使用的意图
开始下一个活动。您可以通过以下代码实现此目的

1
2
3
4
Intent intent = new Intent();
            intent.putExtra("KeyForResult1", <your variable>);
            intent.putExtra("KeyForResult2",<your variable>);
            startActivity(this, nextactivity.class);

在下一个活动中,您需要获取意图并提取变量中的值
这可以实现

1
2
variabletype variable = getIntent().getExtras().get("KeyForResult1");
   variabletype variable = getIntent().getExtras().get("KeyForResult2");


我能够通过我研究过的数据混合来解决这个问题。似乎终于有效了

1
2
3
4
5
int resultInt=24;

Intent myIntent = new Intent(CalPalActivity.this, ResultsActivity.class);
myIntent.putExtra("intVariableName", resultInt);
startActivity(myIntent);

在第一个活动和

1
2
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("intVariableName", 0);

在第二。为什么它像这样工作并一直给我错误,例如"Intent类型中的方法getIntExtra(String,int)不适用于我永远不会知道的第二个活动中的参数(String)"。即使是快速修复程序也没有解决它(我只是不断得到新的错误)。总而言之,这是一个昂贵的(5小时+),但很好的吸取教训。所有的帮助都非常感谢。我能够理解并学习更多关于语言的知识。谢谢!


你可以用这个:

ActivityOne.class:

1
2
3
4
5
6
7
8
9
10
//compute the data and get the result here
//suppose results are,

    int resultInt=24;
    String resultString="abc";

    Intent intent=new Intent(getApplicationContext(),ActivityTwo.class);
    intent.putExtra("ResultInInteger",resultInt);
    intent.putExtra("ResultInString",resultString);
    startActivity(intent);

这将打开ActivityTwo.class,您可以在其中获取如下数据:

1
2
int resultInt=getIntent().getIntExtra("ResultInInteger");
String resultString=getIntent().getStringExtra("ResultInString");


这是一个选项。
在第一个活动:

1
2
3
Intent yourNextActivityIn=new Intent(this,yourNextActivity.class);
yourNextActivityIn.putExtra("tag",valueToBePassed);
startActivity(yourNextActivityIn);

在第二个活动中:

1
2
//If value is an Integer with default value 1
int value = getIntent().getIntExtra("tag", 1);

其他

1
2
//if value is a string
String value = getIntent().getStringExtra("tag");

有几种选择。对于你的任务,我选择在Intent的附加内容中传递数据。

对于所有选项阅读此内容


你应该阅读Intents。您可以在intent中存储额外内容,就像URL参数一样。如果您使用该意图开始下一个活动,它将能够从意图的附加内容中提取数据。