У меня есть проект для HoneyComb, и я получаю сообщение об ошибке после использования метода recreate() методом onResum() в моей основной деятельности.
11-10 22:05:42.090: E/ActivityThread(1917): Performing pause of activity that is not resumed: {com.blogspot.honeyapp/com.blogspot.honeyapp.Main}
11-10 22:05:42.090: E/ActivityThread(1917): java.lang.RuntimeException: Performing pause of activity that is not resumed: {com.blogspot.honeyapp/com.blogspot.honeyapp.Main}
11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2517)
11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2505)
11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2483)
11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.access$700(ActivityThread.java:122)
11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1031)
11-10 22:05:42.090: E/ActivityThread(1917): at android.os.Handler.dispatchMessage(Handler.java:99)
11-10 22:05:42.090: E/ActivityThread(1917): at android.os.Looper.loop(Looper.java:132)
11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.main(ActivityThread.java:4123)
11-10 22:05:42.090: E/ActivityThread(1917): at java.lang.reflect.Method.invokeNative(Native Method)
11-10 22:05:42.090: E/ActivityThread(1917): at java.lang.reflect.Method.invoke(Method.java:491)
11-10 22:05:42.090: E/ActivityThread(1917): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
11-10 22:05:42.090: E/ActivityThread(1917): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
11-10 22:05:42.090: E/ActivityThread(1917): at dalvik.system.NativeStart.main(Native Method)
Я создаю новый проект, чтобы показать вам, что произойдет.
Вы можете найти его на http://xp-dev.com/svn/RecreateError/trunk/
Я не знаю, в чем моя вина, но я запускаю Activity и записываю жизненный цикл Activity. Результат:
11-10 22:26:45.960: I/seasons log(2274): onCreate()
11-10 22:26:45.990: I/seasons log(2274): onStart()
11-10 22:26:45.990: I/seasons log(2274): onResume()
Теперь я нажимаю значок панели действий, чтобы активировать флаг воссоздания и перейти на другое приложение...
11-10 22:30:26.390: I/seasons log(2274): onPause()
11-10 22:30:27.080: I/seasons log(2274): onStop()
И вернемся к моей активности с активированным флагом refreate, что будет сделано rereate() at onResume().
11-10 22:33:05.500: I/seasons log(2274): onCreate()
11-10 22:33:05.510: I/seasons log(2274): onStart()
11-10 22:33:05.510: I/seasons log(2274): onResume()
11-10 22:33:05.510: I/seasons log(2274): onPause()
OnPause? Но моя активность видна, что я делаю неправильно? Правильный статус не находится в режимеResume()?
И теперь, если я перейду на другое приложение, я получу ошибку.
Спасибо за ваше время и извините за мой плохой английский.
В настоящее время я не понимаю, как такие приложения, как File Manager HD, выполняют это действие.
Две операции: основная активность A, активность B с предпочтением. Фрагмент как основной контент.
Один из вариантов, который изменяет тему между Holo и Holo.Light,
Действие B изменяется с помощью метода OnSharedPreferenceChangeListener
в PreferenceFragment, но когда мы возвращаемся к методу Main Activity recreate()
при onResume()
не удается, как это сделать?
Я смущен. К сожалению.