现在我尝试使用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();
答案 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