user1209216
user1209216

Reputation: 7914

Android AppCompatPreferenceActivity - flat settings list without subcategories/headers

I have added SettingsActivity to my project. By default, Android Studio has created 3 categories with 3 headers. When I tap to category, new settings screen appears. I don't want that. My app has very limited settigns options, so I want to get only flat settings list, without any headers and categories.

What I found, not working or deprecated api. Can you point me right, valid direction how to implement flat settings screen without using any deprecated api?

Upvotes: 2

Views: 773

Answers (1)

Burhanuddin Rashid
Burhanuddin Rashid

Reputation: 5370

In onCreate() method of SettingActivity add general fragment and do the changes whatever you like in GeneralPreferenceFragment

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupActionBar();
        this.getFragmentManager().beginTransaction().replace(android.R.id.content, new GeneralPreferenceFragment()).commit();
    }

And override onOptionItemSelected in GeneralPreferenceFragment like this:

    public static class GeneralPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pref_general);
            setHasOptionsMenu(true);

            // Bind the summaries of EditText/List/Dialog/Ringtone preferences
            // to their values. When their values change, their summaries are
            // updated to reflect the new value, per the Android Design
            // guidelines.
            bindPreferenceSummaryToValue(findPreference("your_key"));
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            if (id == android.R.id.home) {
                getActivity().onBackPressed();
            }
            return super.onOptionsItemSelected(item);
          }
}

Upvotes: 6

Related Questions