在android活动之间传递数据

时间:2011-11-25 08:46:52

标签: android android-activity

  

可能重复:
  How do I pass data between activities in Android?

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

6 个答案:

答案 0 :(得分:3)

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

第1步

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

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

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

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

答案 1 :(得分:1)

您可以使用:

<强> ActivityOne.class:

//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 ,您可以在其中获取如下数据:

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

答案 2 :(得分:1)

我能够通过我研究过的数据混合来解决这个问题。看起来最终有效的是

int resultInt=24;

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

在第一个活动中

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

对于所有选项,请阅读this

答案 5 :(得分:0)

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

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

在第二个活动中:

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

否则

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