Roman
Roman

Reputation: 5388

How to change variables from another Activity?

So I have two activities: main with all data and secondary with Preferences. There are two arrays in main activity that I want to have access to from Preferences activity and work with this two arrays. In fact, I need to reset all data in arrays to default. Is there any way to do it?

I've tried to use SharedPreferences because I store all this data in it. I changed values in it from Preferences activity, but data in main activity haven't changed, I guess, because it's not being restarted, just paused.

Upvotes: 0

Views: 1568

Answers (1)

Julian
Julian

Reputation: 2101

You can use SharedPreferences and register a OnSharedPreferenceChangeListener and/or update the data in the onResume() method of your Activity.

Here's some basic example:

public class MainActivity extends Activity implements OnSharedPreferenceChangeListener {
    private SharedPreferences prefs;

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

        // get your SharedPreferences objects
        prefs = ...;
    }

    // This method will be called every time your activty comes to the front
    @Override
    protected void onResume() {
        super.onResume();

        // register a listener to get notified when the preferences change
        prefs.registerOnSharedPreferenceChangeListener(this);

        // do whatever you need to do to update the data
        updateData();
    }

    @Override
    protected void onPause() {
        super.onPause();

        // unregister listener if another activity comes to the front to save battery
        prefs.unregisterOnSharedPreferenceChangeListener(this);
    }

    // this method will be called when some preference changes
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        // do whatever you need to do to update the data
        updateData();
    }
}

Upvotes: 2

Related Questions