我的Android应用活动中有两个流程。
- A>> B>> ç
- A>> ç
醇>
活动C有一个保存按钮,用于保存A和B的值传递。
活动C
weather = getIntent().getExtras().getString("Weather"); //pass from A
date2 = getIntent().getExtras().getString("date2"); //pass from A
status = getIntent().getExtras().getString("Status"); // pass from B
Sub = getIntent().getExtras().getString("sub"); // pass from B
btnSubmit.setOnClickListener(new View.OnClickListener() { // sumbit button is clicked
public void onClick(View arg0) {
insertA(weather, date2);
insertB(status,Sub,idA);
insertC(food,idA);
}
});
注意到idA始终与表A ID相同
表A
ID Weather date
1 sunny 1/6
2 rainy 2/6
表B
ID status Sub idA
1 work 2 1
2 work 1 2
表C
ID food idA
1 rice 1
2 noodles 2
如果数据来自第一个流,则可以正确插入数据。现在的问题是,当它来自第二流时,没有任何内容插入到表B中,包括IdA。如何在表B列中插入0,即status和sub,以便插入idA?
感谢。
表B
我想要这样的东西
表B
ID status Sub idA
1 0 0 1 // if it is from second flow
2 work 1 2
不是这个
表B (第二次插入数据时)
ID status Sub idA
1 work 1 2
答案 0 :(得分:1)
在第二个流程中,不传递status和Sub。因此getExtras()
为这些值返回null。这就是为什么它没有被添加到数据库中(可能是因为dabase设计限制。就像not null
)。
所以,尝试改变你的代码,
status = getIntent().getExtras().getString("Status", "0");
Sub = getIntent().getExtras().getString("sub", "0");
这里,第二个参数是默认值,如果为null则将传递。在第二流" 0"将被传递为null。