Search code examples
androidvertical-scrolling

Android scrolling shows double content


if im scrolling in my setting activity, the content shows up twice. It seems in landscape mode there a new layer which is able to scroll and the layer below doesn't move.

How thats happening? I didn't add really much code in this class.

Probably a stupid mistake from me. Sorry - im new on Android.

Thanks for your answers.

public class AppPreferences extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            android.app.FragmentManager fragmentManager = getFragmentManager();
            android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            SettingsFragment settingsFragment = new SettingsFragment();
            fragmentTransaction.add(android.R.id.content, settingsFragment, "SETTINGS_FRAGMENT");
            fragmentTransaction.commit();
        }

        public static class SettingsFragment extends PreferenceFragment {
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.xml.app_preferences);
            }
        }
    }

Solution

  • When you rotate the device the fragment is being created by the framework, so you should not create it.

    Do it like this:

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            if (savedInstanceState == null) {
                android.app.FragmentManager fragmentManager = getFragmentManager();
                android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                SettingsFragment settingsFragment = new SettingsFragment();
                fragmentTransaction.add(android.R.id.content, settingsFragment, "SETTINGS_FRAGMENT");
                fragmentTransaction.commit();
            }
        }