【问题标题】:How to pass a string Arraylist from one activity to another?如何将字符串 Arraylist 从一个活动传递到另一个活动?
【发布时间】:2015-04-23 08:23:44
【问题描述】:

现在我尝试使用额外的意图来通过捆绑字符串数组列表传递和接收,但由于某种原因,列表永远不会通过,当我尝试使用 get(0) 从列表中检索第一个字符串时,我得到一个空指针错误,有人可以帮我解决这个问题吗?

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

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

【问题讨论】:

  • 那不编译。 stringArray 被声明为 final 所以你不能在下一行重新分配它。

标签: java android android-studio


【解决方案1】:

i.putStringArrayListExtra()代替i.putExtra()

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

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

【讨论】:

  • 嘿,我做了那个更改,但空指针错误仍然存​​在。
  • @WaqasKhan 看看@pbabcdefp 的评论,声明myStringArray 时去掉final
  • 是的,谢谢,arraylist 正确存储了字符串,删除 final 再次解决了问题。
【解决方案2】:

我认为您从第二个活动的意图中弄错了 arrayList:

Intent intent = getIntent();

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

【讨论】:

  • 其实这和现在的代码基本一样。他只是在Bundle 上使用getStringArrayList 而不是Intent 上的getStringArrayListExtra,这将达到相同的结果。
猜你喜欢
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多