5

При изменении ориентации, активность воссоздана, а также диалоговое окно Date Time Dialog. Я хочу сохранить диалоговое окно состояния даты, которое было изменено пользователем.Как сохранить состояние datetime Диалог изменения ориентации?

Перед тем, как отклонить диалог, я хочу сохранить состояние диалогового окна «Время по дате».

Примечание. Я могу отклонить диалог в onSaveInstanceState, где у меня есть доступный комплект. Но он также вызывается, когда действие переходит в состояние паузы, и в этом случае я не хочу отклонять диалог. Следовательно, решил отклонить его по методу onDestroy, но у меня нет объекта пакета. Вот почему я столкнулся с этой проблемой. Есть ли способ получить доступ к пакету в onDestroy? Или любое другое предложение по моей проблеме будет оценено по достоинству.

@Override 
protected void onDestroy() { 
    if(dateTimeDialog !=null && dateTimeDialog.isShowing()) 
    { 
     //<HERE I WANT THE STATE TO BE SAVED IN THE BUNDLE> 
     dateTimeDialog.dismiss(); 
    } 
    super.onDestroy(); 
} 

В основном мы блокируем приложение, если пользователь отдаляться от нашего приложения, и разблокировать экран и диалог, он просматривает возобновляются. И если мы отклонили диалог onSavedInstanceState, после разблокирования приложения он вызывает onRestart, запускает и возобновляет методы, где ни один из них не имеет экземпляра Bundle, поставляемого в качестве параметра.

Кроме того, у нас есть отдельные макеты для пейзажа &, из-за которого мы не можем установить configChanges = "ориентация" в файле манифеста.

+2

Класс DatePickerDialog имеет 'onSaveInstanceState()' и 'onRestoreInstanceState()' методы. –

ответ

0

Вы все еще можете сохранить свои диалоговые состояния в onSaveIsntanceState(), но только закрыть диалоговое окно в onDestroy(), который должен удовлетворять вашим требованиям. Хотя я не уверен, что произойдет увольнение диалога в onDestroy().

+0

да, это правда! и отлично работает, но я хотел сохранить диалог после разблокировки своего устройства, и когда я отклоняю диалог в onSaveInstanceState(), он также вызывается, когда действие переходит в приостановленное состояние, и в этом случае я не хочу отклонять диалог. Следовательно, решил отклонить его по методу onDestroy, но у меня нет объекта пакета. – AndroidGeeks

0

использовать приведенную ниже строку в файле манифеста в actvity теги

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 

как

<application 
android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
<activity 
    android:name="com.example.demo.MainActivity" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

и переопределить ниже метод в вашей деятельности.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // TODO Auto-generated method stub 
    super.onConfigurationChanged(newConfig); 
} 

Нет необходимости использовать onSaveInstanceState() и onRestoreInstanceState()

Пожалуйста, дайте мне знать состояние после добавления ablove код

+0

Я обновил вопрос и упомянул причину, почему я не использую configChanges. – AndroidGeeks

Смежные вопросы