【发布时间】:2018-10-02 07:31:53
【问题描述】:
我想将 ArrayList<String> 和 ArrayList<Boolean> 传递给我的下一个活动,但无论我尝试什么,它似乎总是用我的第二个 ArrayList 覆盖我的第一个 ArrayList。即使我使用布尔数组而不是 ArrayList,也会出现同样的问题。 KEY 不同,值也不同。我已经尝试了很多东西(不记得全部),包括捆绑包,但同样的事情一直在发生。我做错了什么?
在这两种情况下(以及许多其他情况),数据返回 null。
编辑:睡了一晚后清理了代码,因为我注意到其中确实存在一些错误。另外,我尝试了这两种方法,但都不起作用。
在活动 1 中:
boolean [] checksDataOut;
private ArrayList<String> data = new ArrayList();
intent.putStringArrayListExtra(EXTRA_TODEVICES, data);
intent.putExtra(EXTRA_TO_DEVICES, checksDataOut);
startActivity(intent);
在活动 2 中
public class DevicesInfo extends AppCompatActivity {
public ArrayList<String> data = new ArrayList();
public boolean [] checksDataIn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_devices_info);
Intent intent = getIntent();
data = intent.getStringArrayListExtra(EXTRA_TODEVICES);
checksDataIn = intent.getBooleanArrayExtra(EXTRA_TO_DEVICES);
}
}
在活动 1 中:
private ArrayList<String> data = new ArrayList();
boolean [] checksDataOut;
Bundle extrasOut = new Bundle();
extrasOut.putStringArrayList(EXTRA_TODEVICES, data);
extrasOut.putBooleanArray(EXTRA_TO_DEVICES, checksDataOut);
intent.putExtras(extrasOut);
startActivity(intent);
在活动 2 中:
public class DevicesInfo extends AppCompatActivity {
public ArrayList<String> data = new ArrayList();
public ArrayList<Boolean> checksData = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_devices_info);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
data = bundle.getStringArrayList(EXTRA_TODEVICES);
checksData = (ArrayList<Boolean>) bundle.get(EXTRA_TO_DEVICES);
}
}
【问题讨论】:
-
在代码中,您将变量
checksDataOut添加到包中,但您声明的变量是checksData。checksDataOut是什么? -
在读取 tge 值时使用获取意图对象的代码更新您的问题。
-
checksDataOut是一个布尔数组(见第一行代码)。在其余的代码中,数据将被填充到其中。 -
getBooleanArrayExtra读取的是数组,而不是列表