I am new in developing in Java. I am making an app which uses SharedPreferences. The the specific tutorial I used is this:
http://blog.donnfelker.com/2011/02/17/android-a-simple-eula-for-your-android-apps/
I have modified the code a bit, but it is giving me an error:
public class SimpleEula extends Application {
private String EULA_PREFIX = "eula";
public Activity mActivity;
public SimpleEula(Activity context) {
mActivity = context;
}
public void showEula() {
SharedPreferences sh_showEula;
final String eulaKey = EULA_PREFIX;
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivity);
...
I log my code after every line, and my app crashes at:
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivity);
Even if I change the line to:
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
I still get a crash. I don’t know what the problem is. Could someone help me?
Thanks in advance
EDIT:
These are the errors in LogCat:
08-21 20:44:58.905: E/AndroidRuntime(610): FATAL EXCEPTION: main
08-21 20:44:58.905: E/AndroidRuntime(610): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.test/com.test.test.MainActivity}: java.lang.NullPointerException
08-21 20:44:58.905: E/AndroidRuntime(610): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.app.ActivityThread.access$600(ActivityThread.java:123)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.os.Handler.dispatchMessage(Handler.java:99)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.os.Looper.loop(Looper.java:137)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.app.ActivityThread.main(ActivityThread.java:4424)
08-21 20:44:58.905: E/AndroidRuntime(610): at java.lang.reflect.Method.invokeNative(Native Method)
08-21 20:44:58.905: E/AndroidRuntime(610): at java.lang.reflect.Method.invoke(Method.java:511)
08-21 20:44:58.905: E/AndroidRuntime(610): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-21 20:44:58.905: E/AndroidRuntime(610): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-21 20:44:58.905: E/AndroidRuntime(610): at dalvik.system.NativeStart.main(Native Method)
08-21 20:44:58.905: E/AndroidRuntime(610): Caused by: java.lang.NullPointerException
08-21 20:44:58.905: E/AndroidRuntime(610): at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:371)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:366)
08-21 20:44:58.905: E/AndroidRuntime(610): at com.test.test.SimpleEula.show(SimpleEula.java:23)
08-21 20:44:58.905: E/AndroidRuntime(610): at com.test.test.MainActivity.onCreate(MainActivity.java:26)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.app.Activity.performCreate(Activity.java:4465)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
08-21 20:44:58.905: E/AndroidRuntime(610): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
08-21 20:44:58.905: E/AndroidRuntime(610): ... 11 more
The NullPointerExepter is caused by extending the Activity or Application class. This code works:
Now it works. Thank you all for your help