В последнее время я борюсь со своим приложением.
У меня есть действие 'MyActivity' с просмотром текста, содержащим текущую дату
Вариант использования прост:
- пользователь нажимает кнопку, чтобы запустить намерение камеры из MyActivity
- пользователь делает снимок
- MyActivity возобновляется, и текстовое представление по-прежнему содержит текущую дату
. Это прекрасно работает на большинстве устройств.Однако на устройствах с нехваткой памяти активность разрушается во время намерения камеры, и когда я возвращаюсь к MyActivity, текстовое представление больше не содержит дату.
Используя отладчик и точки останова, я мог видеть следующее:
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"
Как вы можете видеть, текстовое представление устанавливается так, как ожидалось, но экран не показывает его.
Если кто-нибудь может угадать решение этой раздражающей, я был бы благодарен.
Редактировать
@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;
}
}