java - 如何将字符串 Arraylist 从一个 Activity 传递到另一个 Activity ?

标签 java android android-studio

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

第一个 Activity (注册 Activity ):

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

第二个 Activity (登录 Activity ):

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

最佳答案

使用 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

关于java - 如何将字符串 Arraylist 从一个 Activity 传递到另一个 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29810964/

相关文章:

java - 在数组中搜索特定字符串

java - 无法使用 Java 通过 CLI 命令创建 Google 云数据流模板

java - Android LocationManager中NMEA语句来源

java.lang.NoClassDefFoundError : org. apache.http.Consts

cordova - 用于cordova android应用程序的gradle文件

java - 不支持的 major.minor 版本 51.0(无法加载类 org.postgresql.Driver)

java - 将文件上传到 webapp 文件夹中

android - SQLite在Android中创建具有多个主键的表

android - 使用 ADB 命令测量特定应用程序或包名称的电池消耗

android - 我们如何引用位于Android Main Project目录之外的自定义Android和Java库?