2015-10-20 10 views
5

API < 23個のデバイスで完全に動作するアプリケーションを作成しようとしていますが、API 23デバイスで動作します。
基本的に、ユーザーがオプションメニューで設定を変更すると、recreate()でアクティビティが再作成されます。今、メニューオプションでゆっくりとタップすると(オプションが表示されるようになるため)、すべて問題ありませんが、一時的にタップするとアプリケーションがクラッシュします。
私はそれが異常な挙動を止めていることを知っています。私は何がエラーを起こすのかを理解するのに苦労しました。私は再作成()の前にタイムアウトを設定しているので、オプションが "検証され"ても動作しませんでした。 私は他のAPIと以前に働いていたので、私はAPI 23の何らかのバグについて考えることができます。 API 23/MarshmallowのonOptionsItemSelected()内のrecreate()エラーを受け取ります

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) 

任意のヘルプやアドバイス

は非常に高く評価されるだろう:

@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); 
} 

とlogcat: はここに私のコードのスニペット(何も特別な)です。

更新:私は間違いなくAPI> 23にバグがあると思います。空白のアクティビティで新しいプロジェクトを作成し、ちょうどアプリはまだクラッシュonOptionsItemSelected()

if (id == R.id.action_settings) { 
    recreate(); 
    return true; 
} 

の内側に追加した後。

だから私の回避策は次のとおりです。

Intent intent = getIntent(); 
    finish(); 
    startActivity(intent); 

しかし、リロードは()(私は少し点滅を見ることができます)再作成ほどスムーズではありません。

+1

"私はエラーメッセージがあります" - Javaスタックトレースまたは他のエラーメッセージを投稿してください。 – CommonsWare

+0

私はまだログを見ることで問題はありませんが、recraete()はinvalidateOptionsMenu()に置き換えることができます – dex

+0

私は既にinvalidateOptionsMenu()を試しましたが、ページを再作成/更新するトリックはしません。私はそれをメニューのオプションをリフレッシュするために使用し、その目的のためにうまくいきます。 – Vega

答えて

関連する問題