我使用的是第三方图书馆,我推翻了其中一种方法
以下是课程
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//other unrelated code
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Log.d("Device Number","Device number: " + prefs.getString("devicePhoneNumber", "DEFAULT"));
}
}
我使用SharedPreferences
来设置" devicePhoneNumber"在MainActivity类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other unrelated code
Log.d("test", fromField.getText().toString());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
prefs.edit().putString("devicePhoneNumber", fromField.getText().toString());
prefs.edit().commit();
BroadcastUtils.sendExplicitBroadcast(this, new Intent(), "test action");
}
该应用程序始终打印" DEFAULT"在以下行Log.d("Device Number","Device number: " + prefs.getString("devicePhoneNumber", "DEFAULT"));
我知道如何成功地将主要布局上设置的设置传递给不同的类吗?
答案 0 :(得分:0)
调用prefs.edit()会产生以下影响:
为这些首选项创建新编辑器,通过该首选项,您可以对首选项中的数据进行修改,并将这些更改原子地提交回SharedPreferences对象
所以在我们的代码中代替:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
prefs.edit().putString("devicePhoneNumber", fromField.getText().toString());
prefs.edit().commit();
你必须这样做:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("devicePhoneNumber", fromField.getText().toString());
editor.commit();
这将正确保存您的数据,因为只会使用一个编辑器实例。
如果您打算在活动之间传递数据,请考虑使用Intent.putExtra作为原始数据。您还可以考虑将Parcelable用于对象。