-1

How can I read the SharedPrefs?

My SettingsActivity:

package com.deutz.obd2;


import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.support.v7.app.ActionBar;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.RingtonePreference;
import android.text.TextUtils;
import android.view.MenuItem;

import java.util.List;

/**
 * A {@link PreferenceActivity} that presents a set of application settings. On
 * handset devices, settings are presented as a single list. On tablets,
 * settings are split by category, with category headers shown to the left of
 * the list of settings.
 * <p>
 * See <a href="http://developer.android.com/design/patterns/settings.html">
 * Android Design: Settings</a> for design guidelines and the <a
 * href="http://developer.android.com/guide/topics/ui/settings.html">Settings
 * API Guide</a> for more information on developing a Settings UI.
 */
public class SettingsActivity extends AppCompatPreferenceActivity {
    /**
     * A preference value change listener that updates the preference's summary
     * to reflect its new value.
     */
    private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
        @Override
        public boolean onPreferenceChange(Preference preference, Object value) {
            String stringValue = value.toString();

            if (preference instanceof ListPreference) {
                // For list preferences, look up the correct display value in
                // the preference's 'entries' list.
                ListPreference listPreference = (ListPreference) preference;
                int index = listPreference.findIndexOfValue(stringValue);

                // Set the summary to reflect the new value.
                preference.setSummary(
                        index >= 0
                                ? listPreference.getEntries()[index]
                                : null);

            } else {
                // For all other preferences, set the summary to the value's
                // simple string representation.
                preference.setSummary(stringValue);
            }
            return true;
        }
    };

    /**
     * Helper method to determine if the device has an extra-large screen. For
     * example, 10" tablets are extra-large.
     */
    private static boolean isXLargeTablet(Context context) {
        return (context.getResources().getConfiguration().screenLayout
                & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
    }

    /**
     * Binds a preference's summary to its value. More specifically, when the
     * preference's value is changed, its summary (line of text below the
     * preference title) is updated to reflect the value. The summary is also
     * immediately updated upon calling this method. The exact display format is
     * dependent on the type of preference.
     *
     * @see #sBindPreferenceSummaryToValueListener
     */
    private static void bindPreferenceSummaryToValue(Preference preference) {
        // Set the listener to watch for value changes.
        preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);

        // Trigger the listener immediately with the preference's
        // current value.
        sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
                PreferenceManager
                        .getDefaultSharedPreferences(preference.getContext())
                        .getString(preference.getKey(), ""));
    }

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

        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsPreferenceFragment()).commit();
    }

    /**
     * Set up the {@link android.app.ActionBar}, if the API is available.
     */
    private void setupActionBar() {
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            // Show the Up button in the action bar.
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean onIsMultiPane() {
        return isXLargeTablet(this);
    }

    /**
     * {@inheritDoc}
     */

    /**
     * This method stops fragment injection in malicious applications.
     * Make sure to deny any unknown fragments here.
     */
    protected boolean isValidFragment(String fragmentName) {
        return PreferenceFragment.class.getName().equals(fragmentName)
                || SettingsPreferenceFragment.class.getName().equals(fragmentName);
    }

    /**
     * This fragment shows general preferences only. It is used when the
     * activity is showing a two-pane settings UI.
     */
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    public static class SettingsPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pref_settings);
            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("key_connection_type"));
            bindPreferenceSummaryToValue(findPreference("key_server_ip"));
            bindPreferenceSummaryToValue(findPreference("key_server_port"));
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            if (id == android.R.id.home) {
                startActivity(new Intent(getActivity(), MainActivity.class));
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    }

}

My pref XML:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <ListPreference
        android:defaultValue="1"
        android:title="@string/pref_title_connection_type"
        android:entries="@array/pref_sync_connection_type_titles"
        android:entryValues="@array/pref_sync_connection_type_values"
        android:key="key_connection_type"
        android:negativeButtonText="@null"
        android:positiveButtonText="@null"
        android:summary="@string/pref_summary_connection_type" />
    <EditTextPreference
        android:defaultValue="@string/pref_default_server_ip"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:title="@string/pref_title_server_ip"
        android:key="key_server_ip" />
    <EditTextPreference
        android:defaultValue="@string/pref_default_server_port"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:title="@string/pref_title_server_port"
        android:key="key_server_port" />
</PreferenceScreen>

I would like to read the both EditTextPrefs and the ListPref in other classes. The List should define how to Connect and the EditText gives the IP and Port for Wifi. So I have two classes for TCP and Bluetooth and I would like to use the IP and Port in the TCP class.

How can I read the Saved Prefs? Pls help

mosambers
  • 21
  • 1
  • 7
  • Possible duplicate of [How do I get the SharedPreferences from a PreferenceActivity in Android?](http://stackoverflow.com/questions/2614719/how-do-i-get-the-sharedpreferences-from-a-preferenceactivity-in-android) – Nick Friskel Dec 15 '16 at 21:38

1 Answers1

0

Use this

SharedPreference sharedPreference = PreferenceManager.getDefaultSharedPreferences(context);
sharedPreference.getString("KEY_OF_WHAT_YOU_WANT","DEFAULT_VALUE");
Tabish Hussain
  • 852
  • 5
  • 13
  • yep, where KEY_OF_WHAT_YOU_WANT above is, say, android:key="key_server_ip" – Saik Caskey Dec 15 '16 at 10:38
  • I get 'Cannot resolve Method' and 'Cannot resolve Symbol' – mosambers Dec 15 '16 at 11:22
  • I did this: SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(Context.MODE_PRIVATE); sharedPreferences.getString("key_server_ip","192.198.0.10"); Now it says: 'cannot be allpied to (int) – mosambers Dec 15 '16 at 11:56
  • try to use getInt instead of getString – Tabish Hussain Dec 15 '16 at 12:57
  • Does it help @Mike ? – Tabish Hussain Dec 15 '16 at 13:33
  • @TabishHussain not really, I think I am always referencing to a wrong context, I cant reach my pref_settings.xml file. By the way, I am used the settings acitivtiy wizard of android studio which is creating little bit more files then tutorials – mosambers Dec 15 '16 at 13:53
  • I dont know why but it works with this: SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); ServerIP = sharedPref.getString("key_server_ip", "192.168.0.10"); Thank you for your time. – mosambers Dec 15 '16 at 14:10
  • please accept the answer... this is the right way to thankx :-D – Tabish Hussain Dec 15 '16 at 19:31