我做了大量的搜索,但是我无法找到有关传输数组值的一致答案,所以我试了一下,但是我失败了
这是我要传输的数组
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]);
这样做的正确方法是什么?
答案 0 :(得分:1)
问题在于:
intent.putExtra("usersAnswers1", extras);
extras
是Bundle
而不是String[]
的实例。您对usersAnswers1
和String[]
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(额外)
会奏效。
您可以通过源代码了解它是如何工作的。