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

How do I pass the values of an Array through Android Intents?

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

这是我要传输的数组

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

这是我试图从

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

然后我尝试在第 2 个 Activity 中捕获它,同时尝试将其移动到第 3 个 activity。这是因为我需要 Activity 3 中的数组值,而不是 Activity 2

Bundle extras = getIntent().getExtras();

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

然后我在第三个抓到了activity

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

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

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

执行此操作的正确方法是什么?

问题在这里:

intent.putExtra("usersAnswers1", extras);

extrasBundle 而非 String[] 的实例。您对 String[]Bundle

使用相同的密钥 usersAnswers1

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

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

那么你就可以在第三个activity.

中找回它

旁白:为键 "userAnswers1" 创建常量。

将第二个 activity 更改为

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

然后在第三个抓到它activity

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

在activity2中,你只需要传递一份即可。

intent.putExtras(附加)

会起作用。

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