-2

I am experimenting with shared preferences and I get a NullPointerException error when I click the button bAddList.

Here is my MainActivity Class (The only class in the project)

package com.teamvdb.checklist;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity{
static String filename;
SharedPreferences.Editor editor;
SharedPreferences someData;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    filename ="checkLists";
    Button bAddList = (Button) findViewById(R.id.bAddList);
    final EditText etNewListName = (EditText) findViewById(R.id.etListName);
    final TextView tvResults = (TextView) findViewById(R.id.result);

    bAddList.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String stringData = etNewListName.getText().toString();
            SharedPreferences.Editor editor = someData.edit();
            editor.putString("sharedString", stringData);
            editor.commit();

            someData = getSharedPreferences(filename,0);
            String dataReturned = someData.getString("SharedString", "Unable to Load Data");
            tvResults.setText(dataReturned);
        }
    });


}

}

Logcat

12-12 20:50:37.818: W/dalvikvm(32683): threadid=1: thread exiting with uncaught exception (group=0x41812da0)
12-12 20:50:37.818: E/AndroidRuntime(32683): FATAL EXCEPTION: main
12-12 20:50:37.818: E/AndroidRuntime(32683): Process: com.teamvdb.checklist, PID: 32683
12-12 20:50:37.818: E/AndroidRuntime(32683): java.lang.NullPointerException
12-12 20:50:37.818: E/AndroidRuntime(32683):    at com.teamvdb.checklist.MainActivity$1.onClick(MainActivity.java:32)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at android.view.View.performClick(View.java:4637)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at android.view.View$PerformClick.run(View.java:19422)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at android.os.Handler.handleCallback(Handler.java:733)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at android.os.Handler.dispatchMessage(Handler.java:95)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at android.os.Looper.loop(Looper.java:136)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at android.app.ActivityThread.main(ActivityThread.java:5586)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at java.lang.reflect.Method.invokeNative(Native Method)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at java.lang.reflect.Method.invoke(Method.java:515)
12-12 20:50:37.818: E/AndroidRuntime(32683):    at com.android.internal.os.ZygoteInit$MethodAndArgsC
Blackbelt
  • 156,034
  • 29
  • 297
  • 305
Sai Barker
  • 83
  • 3
  • 13
  • It's easier if you just include the stack trace locally, and indicate where the offending line is in your code. – geert3 Dec 12 '14 at 10:01

2 Answers2

1

Initialize someData before using it.

This should be the code in your onClick method :

 String stringData = etNewListName.getText().toString();
        someData = getSharedPreferences(filename,0);
        SharedPreferences.Editor editor = someData.edit();
        editor.putString("sharedString", stringData);
        editor.commit();


        String dataReturned = someData.getString("SharedString", "Unable to Load Data");
        tvResults.setText(dataReturned);

SET operations :

Set<String> set = new HashSet<String> ();



for (String s : set) {
//do operations on string s
}
TechHelper
  • 822
  • 10
  • 24
1

Your issue is related to this line:

SharedPreferences.Editor editor = someData.edit();

someData is declared as class member but never initialized. Trying to access it causes a NullPointerException

Blackbelt
  • 156,034
  • 29
  • 297
  • 305