问题
I am having trouble storing data using shared preference. If I have the following code and try to run it, it crashes. I don't know why though.
public class Favorites extends Activity{
private static final String TAG_NAME = "title";
private static final String TAG_URL = "href";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorites);
Intent in = getIntent();
TextView favName = (TextView) findViewById(R.id.textView1);
String FILENAME = "settings";
String string = "hello world!";
SharedPreferences pref = getSharedPreferences("Preference",
MODE_WORLD_READABLE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("keyBoolean", true);
editor.putFloat("keyFloat", 1.0f);
editor.putInt("keyInt", 1);
editor.putLong("keyLong", 1000000L);
editor.putString("keyString", "Hello Android");
editor.commit();
boolean dataFromPrefBool = pref.getBoolean("keyBoolean", false);
float dataFromPrefflaot = pref.getFloat("keyFloat", 0.0f);
int dataFromPrefInt = pref.getInt("keyInt", 0);
long dataFromPrefLong = pref.getLong("keyLong", 0);
String dataFromPrefString = pref.getString("keyString", null);
favName.setText(dataFromPrefInt);
}
Why is nothing happening? These are just dummy values but still nothing happens
回答1:
change
SharedPreferences pref = getSharedPreferences("Preference",
MODE_WORLD_READABLE);
to
SharedPreferences pref = getSharedPreferences("Preference",
MODE_WORLD_WRITABLE);
回答2:
Try this, maybe it is due to null pointer exception.I am not sure.
public class Favorites extends Activity{
private static final String TAG_NAME = "title";
private static final String TAG_URL = "href";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorites);
Intent in = getIntent();
TextView favName = (TextView) findViewById(R.id.textView1);
String FILENAME = "settings";
String string = "hello world!";
SharedPreferences pref = getSharedPreferences("Preference",
MODE_WORLD_READABLE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("keyBoolean", true);
editor.putFloat("keyFloat", 1.0f);
editor.putInt("keyInt", 1);
editor.putLong("keyLong", 1000000L);
editor.putString("keyString", "Hello Android");
editor.commit();
boolean dataFromPrefBool = pref.getBoolean("keyBoolean", null);
float dataFromPrefflaot = pref.getFloat("keyFloat", null);
int dataFromPrefInt = pref.getInt("keyInt", null);
long dataFromPrefLong = pref.getLong("keyLong", null);
String dataFromPrefString = pref.getString("keyString", null);
if(dataFromPrefInt==null)
{
favName.setText("");
}
else
{
favName.setText(dataFromPrefInt);
}
}
}
来源:https://stackoverflow.com/questions/10240243/shared-preference-android-storing-data