'da onOptionsItemSelected() içindeki recreate() içinde bir hata alıyorum Uygulamamı API < 23 cihazında mükemmel şekilde çalıştırmaya çalışıyorum, bir API 23 cihazında çalışıyorum.
Temel olarak, kullanıcı seçenekler menüsünden bir ayar değiştirdiğinde, etkinlik recreate() ile yeniden oluşturulur. Şimdi, menü seçeneğinde yavaşça dokunduğumda (vurgulanan seçeneği görmek için zamanım var), her şey yolunda, ancak kısaca dokunduğumda, Uygulama çöküyor.
Bunun bir tuhaf davranış olduğunu biliyorum ve hatayı neyin tetiklediğini anlamak için zor zamanlar geçirdim. Recreate() 'den önce bir zaman ayırdım, bu yüzden seçenek "onaylandı", ancak bu işe yaramadı. Yalnızca API 23'te bir tür hatayı düşünebilirim çünkü daha önce diğer API'lerle çalışmış. API 23/Marshmallow
10-20 23:12:10.062 3217-3245/? E/Surface: getSlotFromBufferLocked: unknown buffer: 0xab3d1b80
10-20 23:12:11.050 3217-3245/? E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb4013030
10-20 23:12:11.075 3217-3245/? E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -19
10-20 23:12:11.075 3217-3245/? E/EGL_emulation: tid 3245: swapBuffers(324): error 0x3003 (EGL_BAD_ALLOC)
10-20 23:12:11.075 3217-3245/? A/OpenGLRenderer: Encountered EGL error 12291 EGL_BAD_ALLOC during rendering
10-20 23:12:11.075 3217-3245/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 3245 (RenderThread)
Herhangi bir yardım veya tavsiye
çok mutluluk duyacağız:@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_1:
//... some code goes here
recreate();
return true;
// some other options ..
}
return super.onOptionsItemSelected(item);
}
ve logcat: İşte benim kod snippet'idir (özel bir şey) 'dir.
UPDATE: Kesinlikle API> 23'te bir hata olduğunu düşünüyorum.() Boş bir aktivite ile yeni bir proje oluşturma ve sadece onOptionsItemSelected içine ekledikten sonra
if (id == R.id.action_settings) {
recreate();
return true;
}
uygulaması hala çöküyor.
Intent intent = getIntent();
finish();
startActivity(intent);
Ama yeniden() (Biraz yanıp görebilir) yeniden yaratmak ile olduğu kadar pürüzsüz değildir:
Yani benim geçici çözüm olduğunu.
"Bir hata mesajım var" - lütfen Java yığın izini veya başka bir hata mesajını gönderin. – CommonsWare
Hala günlükleri görerek sorun nedir ama recraete() invalidateOptionsMenu() – dex
ile değiştirilmiş olabilir zaten invalidateOptionsMenu() denedim ama bu sayfa yeniden oluşturma/yenileme hile yapmaz. Yenileme menü seçenekleri için kullanıyorum ve bu amaçla iyi çalışıyor. – Vega