如何将字符串Arraylist从一个活动传递到另一个活动?

时间:2015-04-22 23:45:03

标签: java android android-studio

现在我尝试使用intent extra来通过bundle字符串数组列表传递和接收但由于某种原因列表永远不会通过,当我尝试使用get(0)从列表中检索第一个字符串时我得到一个null指针错误,有人可以帮我这个吗?

第一项活动(注册活动):

 public static final String string_array = "geoquiz.android.bignerdranch.com.string_array";

final ArrayList<String> myStringArray = new ArrayList<>();
myStringArray.add(username.getText().toString());
myStringArray.add(firstName.getText().toString());
myStringArray.add(lastName.getText().toString());

Intent i = new Intent(signUpActivity.this,loginActivity.class);
i.putExtra("string_array", myStringArray);
startActivity(i);

第二项活动(登录活动):

final Bundle stringArrayList = getIntent().getExtras();
final ArrayList<String> stringArray = new ArrayList<> (); 
stringArray = stringArrayList.getStringArrayList("string_array");

if(username.getText().toString().equals(stringArray.get(0)))
Toast.makeText(loginActivity.this, "You have successfully logged in!", Toast.LENGTH_SHORT).show();

2 个答案:

答案 0 :(得分:2)

我认为你从第二个活动的意图中得到了错误的arrayList:

Intent intent = getIntent();

ArrayList<String> stringArray = intent.getStringArrayListExtra("string_array");

答案 1 :(得分:2)

而不是i.putExtra()使用i.putStringArrayListExtra()

此外,添加日志条目以确保按预期填充数组。

Log.i("myStringArray", myStringArray.toString());
Intent i = new Intent(signUpActivity.this,loginActivity.class);
i.putStringArrayListExtra("string_array", myStringArray); //modified
startActivity(i);

此外,请在此代码中取出final

final Bundle stringArrayList = getIntent().getExtras();
//final ArrayList<String> stringArray = new ArrayList<> (); //no need for this line
ArrayList<String> stringArray = stringArrayList.getStringArrayList("string_array"); //just declare and assign

请参阅documentation here