【问题标题】:In Android: How do I get variables/data from one screen to another?在 Android 中:如何从一个屏幕获取变量/数据到另一个屏幕?
【发布时间】:2012-07-20 03:44:50
【问题描述】:

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

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

现在,当我点击“确定”按钮时,我希望出现一个新屏幕/活动并简单地告诉我答案 (4)。我是否使用全局变量来执行此操作?任何帮助将不胜感激。

【问题讨论】:

    标签: android


    【解决方案1】:

    第一个活动

    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 回答)

    【讨论】:

      【解决方案2】:

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

      在 Intent 中,您可以传递额外内容 (putExtra),在 onCreate 中的“下一个活动”中,您可以 getIntent().getXExtra()(将 X 替换为字段类型)

      【讨论】:

        【解决方案3】:

        查看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;
            }
        

        H.

        【讨论】:

        • 以上是针对活动结果的,但我认为您想将数据从一项活动移动到另一项活动,例如myIntent.putExtra("key", "Value");然后在你使用的新意图中 Intent.getExtra("key") 还有更多 putExtra() 用于其他类型
        • 是的,老实说,有时我也使用全局变量和/或首选项来存储我在其他活动中需要的数据。
        • 不推荐使用首选项,因为它们会产生大量开销。事实上,处理偏好的推荐方法是将它们放在单独的线程中。
        【解决方案4】:

        我的项目中的一个示例。我们必须使用 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");
        

        【讨论】:

          猜你喜欢
          • 2023-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-09
          • 2021-09-30
          • 1970-01-01
          • 1970-01-01
          • 2019-05-10
          相关资源
          最近更新 更多