【问题标题】:How to use onSavedInstanceState with widgets?如何将 onSavedInstanceState 与小部件一起使用?
【发布时间】:2018-04-27 04:18:14
【问题描述】:

我正在学习一个应用程序的屏幕旋转,我遇到了这个example 并尝试了它。

我的问题是,当我尝试使用 Button 小部件时,它的文本仍然是空白的。单击该按钮时,会出现一个日期选择器对话框来选择一个日期。但是如果在选择后旋转屏幕,之前选择的日期就会丢失。

这是我的代码:

startDate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        setDate(startDate);
    }
});

public void setDate(final Button B)
{
    final Calendar calender = Calendar.getInstance();
    day = calender.get(Calendar.DAY_OF_MONTH);
    month = calender.get(Calendar.MONTH);
    year = calender.get(Calendar.YEAR);

    DatePickerDialog pickDate = new DatePickerDialog(add_event.this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
            calender.set(i,i1,i2);
            SimpleDateFormat dateFormat1 = new SimpleDateFormat("dd-MM-yyyy");
            String dateString = dateFormat1.format(calender.getTime());
            B.setText(dateString);
        }
    },year,month,day);
    pickDate.show();
}

@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
    outState.putString("startDate", startDate.getText().toString());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    startDate.setText(savedInstanceState.getString("startDate"));
}

这里有一些图片:

【问题讨论】:

    标签: java android android-savedstate


    【解决方案1】:

    尝试使用onSaveInstanceState(Bundle outState) 的版本,只带一个参数。另一种是当您在清单中设置属性以使活动在重新启动后持续存在时。

    【讨论】:

      猜你喜欢
      • 2014-08-23
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2021-12-03
      • 2012-01-03
      • 1970-01-01
      相关资源
      最近更新 更多