From ed30caa3dd34d8e8e58a3c03665d8b75f166e7f1 Mon Sep 17 00:00:00 2001 From: Mahdi Hijazi Date: Sat, 29 Apr 2017 19:52:09 +0200 Subject: [PATCH] [Android] Fix crash on the Android TV MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Whenever the EmulationActivity crashes and the app gets back to the TvMainActivity, dolphin will crash tring to restor the mBrowseFragment since we don't save the adapter data in the bundle. This is quick hack to avoid the crash. The proper fix would be to save the adapter data in the bundle and restore it before restoring the fragment when the activity gets recreated. Crash Stacktrace: Process: org.dolphinemu.dolphinemu.debug, PID: 30353 java.lang.RuntimeException: Unable to start activity ComponentInfo{org.dolphinemu.dolphinemu.debug/org.dolphinemu.dolphinemu.ui.main.TvMainActivity}: java.lang.IllegalArgumentException: Invalid position 1 requested at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2691) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2752) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6120) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Caused by: java.lang.IllegalArgumentException: Invalid position 1 requested at android.support.v17.leanback.app.BrowseFragment.createMainFragment(BrowseFragment.java:509) at android.support.v17.leanback.app.BrowseFragment.replaceMainFragment(BrowseFragment.java:1454) at android.support.v17.leanback.app.BrowseFragment.setAdapter(BrowseFragment.java:764) at org.dolphinemu.dolphinemu.ui.main.TvMainActivity.buildRowsAdapter(TvMainActivity.java:183) at org.dolphinemu.dolphinemu.ui.main.TvMainActivity.onCreate(TvMainActivity.java:59) at android.app.Activity.performCreate(Activity.java:6664) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2644) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2752)  at android.app.ActivityThread.-wrap12(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6120)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  --- .../org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java | 8 +++++--- .../Android/app/src/main/res/layout/activity_tv_main.xml | 7 +------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java index 3f235fa1c4..17dad7a41e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java @@ -46,8 +46,11 @@ public final class TvMainActivity extends Activity implements MainView setContentView(R.layout.activity_tv_main); final FragmentManager fragmentManager = getFragmentManager(); - mBrowseFragment = (BrowseFragment) fragmentManager.findFragmentById( - R.id.fragment_game_list); + mBrowseFragment = new BrowseFragment(); + fragmentManager + .beginTransaction() + .add(R.id.content, mBrowseFragment, "BrowseFragment") + .commit(); // Set display parameters for the BrowseFragment mBrowseFragment.setHeadersState(BrowseFragment.HEADERS_ENABLED); @@ -55,7 +58,6 @@ public final class TvMainActivity extends Activity implements MainView mBrowseFragment.setBadgeDrawable(getResources().getDrawable( R.drawable.ic_launcher, null)); mBrowseFragment.setBrandColor(getResources().getColor(R.color.dolphin_blue_dark)); - buildRowsAdapter(); mPresenter.onCreate(); diff --git a/Source/Android/app/src/main/res/layout/activity_tv_main.xml b/Source/Android/app/src/main/res/layout/activity_tv_main.xml index fd1573f5c4..b14f5c56d0 100644 --- a/Source/Android/app/src/main/res/layout/activity_tv_main.xml +++ b/Source/Android/app/src/main/res/layout/activity_tv_main.xml @@ -1,12 +1,7 @@ - - \ No newline at end of file