如何从另一个Activity更改变量?

时间:2011-09-04 04:49:07

标签: android variables android-activity

所以我有两个活动:主要包含所有数据,次要包含首选项。主活动中有两个数组,我想要从Preferences活动访问并使用这两个数组。实际上,我需要将数组中的所有数据重置为默认值。有没有办法做到这一点?

我尝试使用SharedPreferences,因为我将所有这些数据存储在其中。我在Preferences活动中更改了它的值,但主要活动中的数据没有改变,我猜,因为它没有重新启动,只是暂停了。

1 个答案:

答案 0 :(得分:2)

您可以使用SharedPreferences和register a OnSharedPreferenceChangeListener和/或更新活动的onResume()方法中的数据。

以下是一些基本示例:

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();
    }
}