لم يعد يتم استدعاء onActivityResult بعد ondestroy
-
02-10-2019 - |
سؤال
onActivityResult يعطيني الصداع الكبير. لعبتي الصغيرة لديها شاشة عنوان / قائمة. عند النقر على "لعبة جديدة" يتم إطلاق نشاط يخلق SurfaceView لعالم الألعاب الخاص بي.
عند اللعب ، يمكن للاعب إدخال المباني في عالم اللعبة. عند الدخول في مبنى أطلق النشاط لهذا المبنى بالذات من SurfaveView الخاص بي. هنا مثال:
Intent storeIntent = new Intent(mMinerClass, GeneralStore.class);
storeIntent.putExtra("player", mPlayer.save());
((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE);
يتم تعريف MminerClass في نشاط اللعبة onCreate:
mMap .mMinerClass = Miner.this;
MMAP هو SurfaceView. أنا أعبر حزمة تحتوي على حالة اللاعب. في onActivityResult ، أمسك الحزمة التي تم إرجاعها بواسطة نشاط المتجر وتحديث حالة المشغل.
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Bundle player = intent.getExtras();
mMap.mSavedPlayer = player;
}
يستخدم MsaVedPlayer لاحقًا لتعيين حالة اللاعب الجديدة.
كل ما سبق يعمل بشكل عام
يمكنني إدخال المتاجر ، وشراء الأشياء ، والمغادرة ، ويتم تحديث المشغل بشكل صحيح.
المشكلة يتجلى عندما أضغط على زر الصفحة الرئيسية (أو زر العودة إلى بعض الأحيان) ويتم استدعاء OnDestroy. لا تفعل طريقة OnDestroy شيئًا إلى جانب استدعاء Super.ondestroy () ؛
بعد أن يتم استدعاء ondestroy () لم يعد يتم استدعاء onActivityResult.
لذا:
1) ألعب اللعبة ، يعمل Everthing بشكل رائع.
2) أنا أضغط على المنزل ويسمى ondestroy
3) إعادة تشغيل لعبتي عبر أيقونة Launcher
4) لعبة السيرة الذاتية. لا يزال بإمكاني الدخول وترك المتاجر ولكن لم يعد يطلق على onActivityResult.
هنا بعض الإخراج logcat. أنا أسجل في كل مرة أدخل فيها طريقة ذات صلة.
App start. Resuming a saved game
07-03 00:33:04.759: ERROR/Miner(4014): -->onCreate
07-03 00:33:04.819: ERROR/Miner(4014): -->onStart
07-03 00:33:08.329: ERROR/Miner(4014): -->onResume
Enter store and buy stuff 2 times. Everything working great.
07-03 00:33:30.419: ERROR/Miner(4014): -->onPause
07-03 00:33:31.279: ERROR/Miner(4014): -->onStop
07-03 00:33:35.069: ERROR/Miner(4014): -->onActivityResult
07-03 00:33:35.069: ERROR/Miner(4014): -->onRestart
07-03 00:33:35.069: ERROR/Miner(4014): -->onStart
07-03 00:33:36.709: ERROR/Miner(4014): -->onResume
07-03 00:33:42.129: ERROR/Miner(4014): -->onPause
07-03 00:33:43.289: ERROR/Miner(4014): -->onStop
07-03 00:33:55.279: ERROR/Miner(4014): -->onActivityResult
07-03 00:33:55.279: ERROR/Miner(4014): -->onRestart
07-03 00:33:55.279: ERROR/Miner(4014): -->onStart
07-03 00:33:56.879: ERROR/Miner(4014): -->onResume
Back button pressed bringing me to title screen
07-03 00:35:26.283: ERROR/Miner(4014): -->onPause
07-03 00:35:27.153: ERROR/Miner(4014): -->onStop
07-03 00:35:27.333: ERROR/Miner(4014): -->onDestroy
Resume Game
07-03 00:36:12.953: ERROR/Miner(4014): -->onCreate
07-03 00:36:13.003: ERROR/Miner(4014): -->onStart
07-03 00:36:14.663: ERROR/Miner(4014): -->onResume
Enter store and buy stuff twice. No more onActivityResult
07-03 00:36:52.063: ERROR/Miner(4014): -->onPause
07-03 00:36:52.863: ERROR/Miner(4014): -->onStop
07-03 00:36:59.913: ERROR/Miner(4014): -->onRestart
07-03 00:36:59.913: ERROR/Miner(4014): -->onStart
07-03 00:37:01.593: ERROR/Miner(4014): -->onResume
07-03 00:37:23.353: ERROR/Miner(4014): -->onPause
07-03 00:37:24.173: ERROR/Miner(4014): -->onStop
07-03 00:37:29.173: ERROR/Miner(4014): -->onRestart
07-03 00:37:29.173: ERROR/Miner(4014): -->onStart
07-03 00:37:30.793: ERROR/Miner(4014): -->onResume
أقوم بنشر هذا من هاتفي ، لذا أعذر أي أخطاء غبية.
أنا أقدر أي رؤية يمكن أن تقدمها فيما يتعلق بهذا. شكرًا!
المحلول
يجب أن تضع اهتمامًا إضافيًا لهذا الخط:
((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE)
هل أنت متأكد من أن McOntext هو النشاط الصحيح؟ أظن أنه ليس النشاط الحالي ولكن الإشارة إلى مثيل نشاط آخر ، وهو الأول الذي تم إغلاقه من قبل. هل يمكنك استخدام "هذا" بدلاً من McOntext؟