Search code examples
javaandroiddebuggingcrash-reports

Shared Preferences Crashes Program


Im trying to make a world creator in a list view that saves the world's name. But the shaed preferences causes the program to crash before the activity opens. Why is this happening? It is perfectly fine without the shared preferences. Any ideas? (that on list view click is unfinished, don't worry about that.) The errors that were most notable were the null pointerexception at the array adapter, storage == null, and skipped frames

package xxx.xxx.xxx;

import android.app.ListActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.PopupWindow;

public class WorldMenu extends  ListActivity{
    SharedPreferences prefs;
    String splitter;
    String[] worldList;
    PopupWindow worldNamer;
    Drawable background;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(WorldMenu.this,                             
            android.R.layout.simple_list_item_1, worldList));
        prefs = getSharedPreferences("worldString", 0);
        splitter =  "Create World\\\\\\\\\\\\\\\\\\\\\\\\\\" + 
            prefs.getString("worldString", "No worlds found.");
        worldList = splitter.split("\\\\\\\\\\\\\\\\\\\\\\\\\\");
     }

    @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){
            worldNamer = new PopupWindow(this);
            worldNamer.setBackgroundDrawable(null);
        }
    }
}

Solution

  • You added the shared preferences and the array for the list view under the adapter so the list view couldn't be created in the first place. Just put the variables on top of the adapter.