第一次调用活动时,会在intent中调用额外的活动。收到额外信息并存储在数据成员中:
class EditBlindScheduleActivity extends Activity
{
private BlindSchedule blindSchedule;
protected void onCreate(Bundle savedInstanceState)
{
...
if (savedInstanceState == null) { // Not recreating, first load.
blindSchedule = (BlindSchedule) getIntent().getSerializableExtra("blindSchedule");
}
有一个简单的if / else来确定我们是否有blindSchedule
对象。
if (blindSchedule == null) {
setTitle("Create Blind Schedule");
} else {
setTitle("Edit Blind Schedule");
}
当我第一次加载活动时,确实标题是"编辑盲计划",这意味着有一个blindSchedule对象。
不幸的是,当我旋转屏幕两次时,标题会显示" Create Blind Schedule",这意味着blindSchedule对象为空并且无法保留。
完整代码如下:
public class EditBlindScheduleActivity extends Activity {
private BlindSchedule blindSchedule;
Boolean creating; // Creating or updating?
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_blind_schedule);
if (savedInstanceState == null) { // Not recreating, first load.
blindSchedule = (BlindSchedule) getIntent().getSerializableExtra("blindSchedule");
}
if (blindSchedule == null) {
creating = true;
setTitle("Create Blind Schedule");
} else {
creating = false;
setTitle("Edit Blind Schedule");
}
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
blindSchedule = (BlindSchedule) savedInstanceState.getSerializable("blindSchedule");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("blindSchedule", blindSchedule);
}
答案 0 :(得分:2)
您需要在onCreate
中检索保存的自定义对象。
onRestoreInstanceState
之后调用{p> onStart
,此时您的setTitle
已被调用。
将其他部分添加到if (savedInstanceState == null)
,并以与blindSchedule
getIntent
if (savedInstanceState == null)
{ // Not recreating, first load.
blindSchedule = (BlindSchedule) getIntent().getSerializableExtra("blindSchedule");
}
else
{
blindSchedule = (BlindSchedule) savedInstanceState.getSerializableExtra("blindSchedule");
}