我确定我错过了一些愚蠢的事情,这可能不是很难......
我将一个整数的arrayl从一个类传递到另一个类。日志显示传递类中的数据是正确的,但它在接收类中总是显示为null。 所有其他意图数据都已正确传递。
ArrayList unsavedEditedSets是私有类变量。
请帮忙。
传递课程段:
holder.returnButton.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
unsavedEditedSets.add(setPositionChoice);
Intent i = new Intent(SetEditor.this, DisplayFullWorkout.class);
i.putIntegerArrayListExtra("use", unsavedEditedSets);
Log.d("INIT - OK",""+unsavedEditedSets); // This shows data is in the arraylist
i.putExtra("subsets", subsetsList);
i.putExtras(extras);
startActivity(i);
}
});
捕捉班级:
private ArrayList<Integer> unsavedEditedSets;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_full_workout);
Intent incomingI = getIntent();
subsetsList = (ArrayList<HashMap<String, String>>)incomingI.getSerializableExtra("subsets");
unsavedEditedSets = (ArrayList<Integer>) incomingI.getIntegerArrayListExtra("use");
extras = incomingI.getExtras();
Log.d("Incoming - BAD",""+unsavedEditedSets); // This shows null arraylist
}
在发送前尝试使用新的arraylist并仍然为null:
ArrayList<Integer> test = new ArrayList<Integer>();
test.add(12);
test.add(19);
i.putExtra("use", test); Log.d("INIT - OK",""+test);
答案 0 :(得分:1)
修改我对帖子的评论的答案:
简化代码,只传递use
额外的空格。看看是否有效。如果是的话;然后加回subsets
额外的。
extras
对象已经使用密钥use
进行额外输入,这是可能的(并且基于它可能没有工作)。
另一项检查是将密钥从use
更改为新值(not_used_elsewhere_cause_its_really_long
),并查看当putExtras
放回时是否成功传递了该值。
答案 1 :(得分:0)
如果我没记错的话,它应该更符合:
Bundle extras = incomingIntent.getExtras();
ArrayList<Integer> = extras.getIntegerArrayList("key");