简体   繁体   中英

ANDROID JAVA: Activity doesn't start when the used SharedPreferences

I have a problem. I want to read value Integer of activity "Settings" in the service GPSTracker and use it there. I use this SharedPrefrences and confirming key input. If the data is validated that the application returns to class FullscreenActivity. This is the code responsible for this in activity Settings:

    SharedPreferences.Editor editor;
    public static final String NAME = "DISTANCE";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
    final View controlsView = findViewById(R.id.fullscreen_content_controls);
    final View contentView = findViewById(R.id.fullscreen_content);

    SharedPreferences pref = getApplicationContext().getSharedPreferences(NAME, MODE_PRIVATE);
    editor=pref.edit();

    Edit1= (EditText) findViewById(R.id.editSkan);
    accept= (Button) findViewById(R.id.buttonSkan);
    accept.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (!Edit1.getText().toString().equals(""))
                value = Integer.parseInt(Edit1.getText().toString());
            editor.putInt("settings", value);
            editor.commit();

            Toast.makeText(getApplicationContext(), "Changed, value + " m", Toast.LENGTH_SHORT).show();
            finish();
        }
    });

A code in GPSTracker like this:

      SharedPreferences pref;

(...)

    private int downloadSettings()
    {
        pref=context.getSharedPreferences("DISTANCE", Activity.MODE_PRIVATE);
        value = pref.getInt("settings",15); 

        return value;
    }

and a method call:

    int dist = downloadSettings();

When I run the apps I get two errors in the log:

*java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.adam.mobileproject/com.example.adam.mobileproject.FullscreenActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.example.adam.mobileproject.GPSTracker.downloadSettings(GPSTracker.java:284)
            at com.example.adam.mobileproject.GPSTracker.<init>(GPSTracker.java:200)
            at com.example.adam.mobileproject.FullscreenActivity.onCreate(FullscreenActivity.java:40)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)*

PLEASE HELP!!!

The problem is definitely that context is null.

However, just like the Activity class, the Service class extends Context, so you should be able to replace context with this or getApplicationContext() .

Try this:

private int downloadSettings()
{
    pref = getApplicationContext().getSharedPreferences("DISTANCE", Activity.MODE_PRIVATE);
    value = pref.getInt("settings",15); 

    return value;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM