Note that there are some explanatory texts on larger screens.

plurals
  1. POShared Preferences doesn't get updated
    primarykey
    data
    text
    <p>I'm trying to make a world creator thing like in games and I am using shared preferences to store the arrays and such. But there is a problem. I am trying to update it from another class so I use static variables to do so. But when I go back to the original class with the list view, I find out that nothing has been updated. Any ideas? Here is the code. Oh and no errors came in the logcat.</p> <p>ListView class.</p> <pre><code>package you.don't.need-to-know; import android.app.ListActivity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; public class WorldMenu extends ListActivity{ public static SharedPreferences prefs = null; static String splitter; String[] worldList; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); prefs = PreferenceManager.getDefaultSharedPreferences(this); splitter = "Create World," + prefs.getString("worldString", ""); worldList = splitter.split(","); setListAdapter(new ArrayAdapter&lt;String&gt;(WorldMenu.this, android.R.layout.simple_list_item_1, worldList)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); if(position == 0){ Intent openWorldNamer = new Intent("you.don't.need-to-know"); startActivity(openWorldNamer); } } } </code></pre> <p>The Updater:</p> <pre><code>package you.don't.need-to-know; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class WorldCreator extends Activity{ EditText worldNameEditor; Button saver; static String updater; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_worldcreator); worldNameEditor = (EditText) findViewById(R.id.editText1); saver = (Button) findViewById(R.id.button1); updater = worldNameEditor.getText().toString() + ","; saver.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Editor editor = WorldMenu.prefs.edit(); editor.putString("worldString", updater); editor.commit(); Intent openListWorld = new Intent("you.don't.need.to-know"); startActivity(openListWorld); } }); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); } } </code></pre> <p>Edit: New Code updated with closer to fixing. Updater and List Activity</p> <p>Updater:</p> <pre><code> import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.View; import android.widget.Button; import android.widget.EditText; public class WorldCreator extends Activity{ EditText worldNameEditor; Button saver; SharedPreferences prefs; OnSharedPreferenceChangeListener listener; String updater; Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_worldcreator); prefs = PreferenceManager.getDefaultSharedPreferences(this); worldNameEditor = (EditText) findViewById(R.id.hello); saver = (Button) findViewById(R.id.button1); updater = worldNameEditor.getText().toString() + ","; saver.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub listener = new SharedPreferences.OnSharedPreferenceChangeListener() { public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { editor = prefs.edit(); editor.putString("worldString", updater); editor.commit(); } }; prefs.registerOnSharedPreferenceChangeListener(listener); Intent openListWorld = new Intent(""); startActivity(openListWorld); }}); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); } } </code></pre> <p>List Activity:</p> <pre><code>import android.app.ListActivity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; public class WorldMenu extends ListActivity{ SharedPreferences prefs = null; String splitter; String[] worldList; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); prefs = PreferenceManager.getDefaultSharedPreferences(this); splitter = "Create World," + prefs.getString("worldString", "hello"); worldList = splitter.split(","); setListAdapter(new ArrayAdapter&lt;String&gt;(WorldMenu.this, android.R.layout.simple_list_item_1, worldList)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); if(position == 0){ Intent openWorldNamer = new Intent(""); startActivity(openWorldNamer); } } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); finish(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload