如何通过Android Intents传递数组的值?

时间:2015-02-28 01:58:56

标签: android arrays android-intent

我做了大量的搜索,但是我无法找到有关传输数组值的一致答案,所以我试了一下,但是我失败了

这是我要传输的数组

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

这是我尝试从

传递意图的活动
 Intent intent = new Intent(Test1.this, Results1.class);
 intent.putExtra("usersAnswers1", usersAnswers1);
 startActivity(intent);

然后我尝试在第二个活动中捕获它,同时尝试将其移动到第三个活动。这是因为我需要活动3中的数组值,而不是活动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]);

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

4 个答案:

答案 0 :(得分:1)

问题在于:

intent.putExtra("usersAnswers1", extras);

extrasBundle而不是String[]的实例。您对usersAnswers1String[]

使用相同的密钥Bundle

答案 1 :(得分:0)

在第二个活动中,您只检索数组并使用

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

然后你就可以在第三个活动中找回它。

除此之外:为密钥“userAnswers1”创建一个常量。

答案 2 :(得分:0)

将您的第二项活动更改为

    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");

答案 3 :(得分:0)

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

intent.putExtras(额外)

会奏效。

您可以通过源代码了解它是如何工作的。