private void openSubPrefScreen(PreferenceScreen prefScreen) { Bundle bundle = getArguments(); if (bundle == null) { return; } String openSubPrefScreen = bundle.getString(EXTRA_OPEN_SUB_PREF_SCREEN, ""); // Open sub preferences screen if EXTRA_OPEN_SUB_PREF_SCREEN was passed in bundle. if (openSubPrefScreen != null && !TextUtils.isEmpty(openSubPrefScreen)) { Log.v(TAG, "Transitioning to pref screen " + openSubPrefScreen); PreferenceScreen categoryRunConditions = (PreferenceScreen) findPreference(openSubPrefScreen); final ListAdapter listAdapter = prefScreen.getRootAdapter(); final int itemsCount = listAdapter.getCount(); for (int itemNumber = 0; itemNumber < itemsCount; ++itemNumber) { if (listAdapter.getItem(itemNumber).equals(categoryRunConditions)) { // Simulates click on the sub-preference prefScreen.onItemClick(null, null, itemNumber, 0); break; } } } }
private void openPreference(String key) { PreferenceScreen preferenceScreen = getPreferenceScreen(); final ListAdapter listAdapter = preferenceScreen.getRootAdapter(); final int itemsCount = listAdapter.getCount(); int itemNumber; for (itemNumber = 0; itemNumber < itemsCount; ++itemNumber) { if (listAdapter.getItem(itemNumber).equals(findPreference(key))) { preferenceScreen.onItemClick(null, null, itemNumber, 0); break; } } }
PreferenceScreen preferenceScreen = (PreferenceScreen) findPreference("pref_key"); final ListAdapter listAdapter = preferenceScreen.getRootAdapter(); EditTextPreference editPreference = (EditTextPreference) findPreference("set_password_preference"); final int itemsCount = listAdapter.getCount(); int itemNumber; for (itemNumber = 0; itemNumber < itemsCount; ++itemNumber) { if (listAdapter.getItem(itemNumber).equals(editPreference)) { preferenceScreen.onItemClick(null, null, itemNumber, 0); break; } } } }
PreferenceScreen preferenceScreen = (PreferenceScreen) findPreference(getResources().getString(R.string.pref_key_root_screen)); PreferenceScreen subPreferenceScreen = (PreferenceScreen) findPreference(getResources().getString(R.string.pref_key_sub_preference_screen)); final ListAdapter listAdapter = preferenceScreen.getRootAdapter(); final int itemsCount = listAdapter.getCount(); int itemNumber; for (itemNumber = 0; itemNumber < itemsCount; ++itemNumber) { if (listAdapter.getItem(itemNumber).equals(subPreferenceScreen)) { //simulates click on the sub-preference preferenceScreen.onItemClick(null, null, itemNumber, 0); break; } }
final Intent intent = getIntent(); final String startScreen = intent.getStringExtra("PREFERENCE_SCREEN_KEY"); if (startScreen != null) { getIntent().removeExtra("PREFERENCE_SCREEN_KEY"); final Preference preference = findPreference(startScreen); final PreferenceScreen preferenceScreen = getPreferenceScreen(); final ListAdapter listAdapter = preferenceScreen.getRootAdapter(); final int itemsCount = listAdapter.getCount(); int itemNumber; for (itemNumber = 0; itemNumber < itemsCount; ++itemNumber) { if (listAdapter.getItem(itemNumber).equals(preference)) { preferenceScreen.onItemClick(null, null, itemNumber, 0); break; } } }
@Override public void onChanged() { adapter.unregisterDataSetObserver(this); // Simulate a click to have the preference screen open for (int i = adapter.getCount() - 1; i >= 0; --i) { if (adapter.getItem(i) == screen) { getPreferenceScreen().onItemClick(null, null, i, 0); break; } } // Remove the preference when the dialog is dismissed Dialog dialog = screen.getDialog(); dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { screen.onDismiss(dialog); getPreferenceScreen().removePreference(screen); setSummary(measurement.getPreferenceSummary()); } }); } });
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.group_preferences); group_id = getArguments().getInt("group_id"); mOpenTrackList = getArguments().getBoolean("openTrackList"); group = DataSource.getInstance().getGroup(group_id); loadGroup(); // openTrackList indicates that this preference was created for the purpose of immediately // opening up the track multi-select list if (mOpenTrackList) { PreferenceScreen screen = (PreferenceScreen) findPreference("group_preference_screen"); int tracksPrefPosition = findPreference("tracks").getOrder(); // make the tracks multi-select preference open up screen.onItemClick( null, null, tracksPrefPosition, 0 ); } }