在Android中:如何从一个屏幕到另一个屏幕获取变量/数据?

时间:2010-02-27 11:33:17

标签: android

在android中:我正在尝试将数据从一个活动/屏幕转移到另一个活动/屏幕。

假设我正在添加两个数字。我使用2个EditText视图,几个标签和一个“确定”按钮布局我的第一个屏幕(xml)。现在,我想将我输入的数字添加到EditText视图中。假设我输入2和2(2 + 2 = 4)。

现在,当我点击“确定”按钮时,我想要一个新的屏幕/活动出现,只是给我看答案(4)。我是否使用全球变量进行此操作?任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:23)

第一项活动

Intent myIntent = new Intent();
myIntent.putExtra("key", "value");
startActivity(myIntent); 

新活动

Intent myIntent = getIntent(); // this is just for example purpose
myIntent.getExtra("key");

查看Android开发网站上的different types you can use

注意:如果您正在寻找一种全局共享对象/数据的方法,那么您可以扩展Application类。查看How to declare global variables in Android?(Soonil回答)

答案 1 :(得分:4)

我想你正在使用Intent开始“下一个屏幕”(它应该这样做)。

在Intent中你可以传递额外的东西(putExtra)和onCreate in“next activity”你可以getIntent().getXExtra()(用字段类型替换X)

答案 2 :(得分:2)

查看Some Intent examples部分(来自常见任务以及Android中的操作方法):

基本上,你使用myIntent.putExtra(...) 将数据(可以是String,Int,Boolean等)发送到另一个接收端(另一个活动)......

然后,结果将被传递回调用Activity的onActivityResult()方法:

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    // See which child activity is calling us back.
    switch (resultCode) {
        case CHOOSE_FIGHTER:
            // This is the standard resultCode that is sent back if the
            // activity crashed or didn't doesn't supply an explicit result.
            if (resultCode == RESULT_CANCELED){
                myMessageboxFunction("Fight cancelled");
            } 
            else {
                myFightFunction(data);
            }
        default:
            break;
    }

小时。

答案 3 :(得分:0)

我项目的样本。我们必须使用Bundle来获取数据。

使用from / first活动中的代码设置数据。您可以设置所有类型的数据类型,包括数组。

Intent i = new Intent(this, LanguageSetting.class);
i.putExtra("From", 1);
startActivity(i);

如何检索数据,在新/第二活动中编写以下代码。

Intent myIntent = getIntent();
Bundle b = myIntent.getExtras();
intCameFrom = b.getInt("From");