Fixed
Status Update
Comments
th...@gmail.com <th...@gmail.com> #2
@Gericop suggested (https://github.com/Gericop/Android-Support-Preference-V7-Fix/issues/89#issuecomment-565863618 ) changing the IDE-generated code in the following way:
diff --git a/app/src/main/java/net/thecybershadow/texteditcrashsample/SettingsActivity.java b/app/src/main/java/net/thecybershadow/texteditcrashsample/SettingsActivity.java
index cc3e643..f3b19dd 100644
--- a/app/src/main/java/net/thecybershadow/texteditcrashsample/SettingsActivity.java
+++ b/app/src/main/java/net/thecybershadow/texteditcrashsample/SettingsActivity.java
@@ -12,10 +12,12 @@ public class SettingsActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings, new SettingsFragment())
- .commit();
+ if (savedInstanceState == null) {
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.settings, new SettingsFragment())
+ .commit();
+ }
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
This seems to fix the crash as well as other bad behaviors (see link).
diff --git a/app/src/main/java/net/thecybershadow/texteditcrashsample/SettingsActivity.java b/app/src/main/java/net/thecybershadow/texteditcrashsample/SettingsActivity.java
index cc3e643..f3b19dd 100644
--- a/app/src/main/java/net/thecybershadow/texteditcrashsample/SettingsActivity.java
+++ b/app/src/main/java/net/thecybershadow/texteditcrashsample/SettingsActivity.java
@@ -12,10 +12,12 @@ public class SettingsActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings, new SettingsFragment())
- .commit();
+ if (savedInstanceState == null) {
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.settings, new SettingsFragment())
+ .commit();
+ }
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
This seems to fix the crash as well as other bad behaviors (see link).
lp...@google.com <lp...@google.com> #3
Yes, the template is incorrect and should have the null check for savedInstanceState that you added. The template will be fixed in a future version of Studio.
Thanks for the report!
Description
1. Create a new Android project in Android Studio
2. Add a settings activity with the default values
3. Make the settings activity the main / launcher activity
4. Run the project in an emulator (reproducible in API 15)
5. Click "Your signature" to bring up the EditTextPreferenceDialog
6. Rotate the screen twice
Stack trace:
12-13 18:31:56.750 1892-1892/net.thecybershadow.texteditcrashsample E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.thecybershadow.texteditcrashsample/net.thecybershadow.texteditcrashsample.SettingsActivity}: java.lang.IllegalStateException: Target fragment must implement TargetFragment interface
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3351)
at android.app.ActivityThread.access$700(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Target fragment must implement TargetFragment interface
at androidx.preference.PreferenceDialogFragmentCompat.onCreate(PreferenceDialogFragmentCompat.java:81)
at androidx.preference.EditTextPreferenceDialogFragmentCompat.onCreate(EditTextPreferenceDialogFragmentCompat.java:47)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2586)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:838)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2659)
at androidx.fragment.app.FragmentManagerImpl.dispatchCreate(FragmentManagerImpl.java:2607)
at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:235)
at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:316)
at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:106)
at net.thecybershadow.texteditcrashsample.SettingsActivity.onCreate(SettingsActivity.java:13)
at android.app.Activity.performCreate(Activity.java:4466)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3351)
at android.app.ActivityThread.access$700(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Sample code:
I noticed a few similar issues (145042913 and 137173772). This one includes a full reproducible example and steps to reproduce. Hope this helps.