【问题标题】:How do I pass the values of an Array through Android Intents?如何通过 Android Intents 传递数组的值?
【发布时间】:2015-02-28 01:58:56
【问题描述】:

我进行了大量搜索,但找不到关于传输数组值的一致答案,所以我试了一下,但失败了

这是我要转移的数组

 public String[] usersAnswers1 = { "Test Array", //Array 0 };

这是我试图从中传递意图的活动

 Intent intent = new Intent(Test1.this, Results1.class);
 intent.putExtra("usersAnswers1", usersAnswers1);
 startActivity(intent);

然后我尝试在第二个活动中捕捉它,同时尝试将它移动到第三个活动。这是因为我需要 Activity 3 中的 Array 值,而不是 Activity 2

Bundle extras = getIntent().getExtras();

Intent intent = new Intent(Results1.this, UsersAnswers1.class);
intent.putExtra("usersAnswers1", extras);
startActivity(intent);

然后我在第三个活动中抓住它

Bundle extras = getIntent().getExtras();
String[] usersAnswers1i = extras.getStringArray("usersAnswers1");

当我的应用程序读取以下行时,我在此行收到 NullPointerException

resultView1.setText("1. " + usersAnswers1i[0]);

这样做的正确方法是什么?

【问题讨论】:

    标签: android arrays android-intent


    【解决方案1】:

    问题就在这里:

    intent.putExtra("usersAnswers1", extras);

    extrasBundle 的实例,而不是 String[] 的实例。您对String[]Bundle 使用相同的密钥usersAnswers1

    【讨论】:

    • 我用“userAnswers1”替换了“extras”,因为它在第一个活动中被删除了。但是当我运行我的应用程序时,没有显示任何测试。
    • 您只需将String[] 值传递给您的第三个Activity
    【解决方案2】:

    在活动2中,您只需传递一份副本。

    intent.putExtras(附加)

    会起作用的。

    你可以通过源代码看到它是如何工作的。

    【讨论】:

    • 在 SO 中不鼓励仅代码答案。此外,这个答案并没有提供比其他答案更多的价值
    【解决方案3】:

    如何在第二个活动中只检索数组并使用

    将其放入新的意图附加项中
    String[] userAnswers = getExtras().getStringArray("usersAnswers1");
    Intent intent = new Intent(Results1.this, UsersAnswers1.class);
    intent.putExtra("usersAnswers1", usersAnswers);
    

    那么您将能够在第三个活动中检索它。

    另外:为键“userAnswers1”创建一个常量。

    【讨论】:

      【解决方案4】:

      将您的第二个活动更改为

          Bundle extras = getIntent().getExtras(); 
          Intent intent = new Intent(Results1.this, UsersAnswers1.class);
           intent.putExtra("usersAnswers1", extras.getStringArray("usersAnswers1")
          );
       startActivity(intent);
      

      然后在第三个活动中抓住它

      Bundle extras = getIntent().getExtras(); String[] usersAnswers1i = extras.getStringArray("usersAnswers1");
      

      【讨论】:

      • 在 SO 中不鼓励仅代码答案。此外,这个答案并没有提供比其他答案更多的价值
      猜你喜欢
      • 2017-06-19
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      相关资源
      最近更新 更多