我最近在申请时苦苦挣扎 我有一项活动' MyActivity'使用包含当前日期的textview
用例很简单:
- 用户单击按钮以从MyActivity启动摄像头意图
- 用户拍照
- 恢复MyActivity并且textview仍保留当前日期
这在大多数设备上都能正常工作。但是,在内存不足的设备上,活动在摄像机意图期间被破坏,当我回到MyActivity时, textview不再保留日期。
使用调试器和断点,我可以看到以下内容:
05-16 12:41:35.364 3614-3614/com.example.test D/TAG: onDestroy: MyActivity@10140ca0
05-16 12:41:35.414 3614-3614/com.example.test D/TAG: onCreate: MyActivity@2e507264
05-16 12:41:35.804 3614-3614/com.example.test D/TAG: setting textview date : "16 05 2018"
05-16 12:41:37.206 3614-3614/com.example.test D/TAG: onDestroy: MyActivity@2e507264
05-16 12:41:37.236 3614-3614/com.example.test D/TAG: onCreate: MyActivity@253f67dc
05-16 12:41:37.706 3614-3614/com.example.test D/TAG: setting textview date : "16 05 2018"
正如您所看到的那样,textview正在按预期设置,但屏幕无法显示。
如果有人能猜到解决这个烦人的问题,我会很感激。
修改
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d("TAG", "onCreate: " + this);
// inflate the layout
loadContent(R.layout.activity_invoice_more_options);
dateView = findViewById(R.id.date_view);
buttonView = findViewById(R.id.button_view);
dateView.setText(Tools.getFormattedDate(Calendar.getInstance().getTime(), "dd MM yyyy"));
// set button click listener
buttonView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent chooseImageIntent = getPickImageIntent(getApplicationContext(), getString(R.string.choose_action));
startActivityForResult(chooseImageIntent, FILE_PICKER_RESULT);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data == null) return;
switch (requestCode) {
case FILE_PICKER_RESULT:
if (resultCode != RESULT_OK) return;
// retrieve file content and name
final String fileName = Tools.getFileName(this, data);
String fileContent = Tools.getFileContent(this, data);
break;
}
}