Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 绑定服务和nullpointerexception_Java_Android_Nullpointerexception_Sharedpreferences - Fatal编程技术网

Java 绑定服务和nullpointerexception

Java 绑定服务和nullpointerexception,java,android,nullpointerexception,sharedpreferences,Java,Android,Nullpointerexception,Sharedpreferences,我一直无法让我的应用程序按我的意愿运行。首先,我试图将所有代码塞进一个活动中,但随着我的应用程序变得更加复杂,我决定需要减轻该特定活动的负担。因此,我创建了一个带有绑定器的服务,并打破了绑定器中的getfromSP方法(每当我从我的主要活动中调用它时,都会得到空指针)但不管怎样,我只是拒绝了 现在,我尝试创建一个服务,在启动时由广播接收器启动后重新安排一些警报,但每次调用mShared.alerm时,我在主活动上都会收到一个空指针错误,该错误工作正常。因此,我尝试将其设为一个简单的活动,并尝试隐

我一直无法让我的应用程序按我的意愿运行。首先,我试图将所有代码塞进一个活动中,但随着我的应用程序变得更加复杂,我决定需要减轻该特定活动的负担。因此,我创建了一个带有绑定器的服务,并打破了绑定器中的getfromSP方法(每当我从我的主要活动中调用它时,都会得到空指针)但不管怎样,我只是拒绝了

现在,我尝试创建一个服务,在启动时由广播接收器启动后重新安排一些警报,但每次调用mShared.alerm时,我在主活动上都会收到一个空指针错误,该错误工作正常。因此,我尝试将其设为一个简单的活动,并尝试隐藏UI,但当主活动工作时,问题仍然存在hy(除了getSP方法)

已经有几天了,我找不到错误发生的原因,所以有人能帮助确定为什么getfromSP和rpr的类mShared.getfromSP上都会发生错误吗

还有一个附带问题:与最基本的服务类型类相比,没有用户界面的活动对性能的影响有多大

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;

import com.App.pc.app.Sharedpees.MyLocalBinder;

public class rpr extends AppCompatActivity{
Sharedpees mShared;
boolean isBound=false;

private ServiceConnection sharedpref =new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        Sharedpees.MyLocalBinder binder =(Sharedpees.MyLocalBinder) service;
        mShared=binder.getService();
        isBound=true;
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        isBound=false;
    }
};

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent f=new Intent(this, Sharedpees.class);
    bindService(f,sharedpref, Context.BIND_AUTO_CREATE);
    SharedPreferences preferences = getApplicationContext().getSharedPreferences("PF", android.content.Context.MODE_PRIVATE);

    if (preferences.getBoolean("conrtacts", false)){
        String checker = "231";
        int rc = 1;
        mShared.alerm(this, checker, rc);

    }
    if (preferences.getBoolean("message", false)){
        String checker = "232";
        int rc = 2;
        mShared.alerm(this, checker, rc);
    }
    if (preferences.getBoolean("clients", false)){
        String checker = "233";
        int rc = 3;
        mShared.alerm(this, checker, rc);
    }

}
}
这是我的活页夹

import android.app.AlarmManager;
import android.app.Application;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.IBinder;
import android.os.Binder;

public  class Sharedpees extends Service {

private final IBinder myBinder = new MyLocalBinder();

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return myBinder;
}

public class MyLocalBinder extends Binder {
    Sharedpees getService() {
        return Sharedpees.this;
    }
}

public void saveInSp(String key, boolean value) {
    SharedPreferences preferences = getApplicationContext().getSharedPreferences("PF", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean(key, value);
    editor.commit();
}
public boolean getFromSP(String key) {
    SharedPreferences preferences = getApplicationContext().getSharedPreferences("PF", android.content.Context.MODE_PRIVATE);

    return  preferences.getBoolean(key, false);
}

public void alerm(Context c,String valuew,int lalu){
    AlarmManager alarm;
    PendingIntent pintent;
    Intent intent = new Intent(c, Lookout.class);
    intent.putExtra("key",valuew);

    alarm = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
    pintent = PendingIntent.getService(c, lalu, intent, 0);
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10 * 1000, pintent);

}
public  void alermoff(Context b,String valuew,int lalu){
    AlarmManager alarm;
    PendingIntent pintent;
    Intent intent = new Intent(b, Lookout.class);
    intent.putExtra("key",valuew);

    alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
    pintent = PendingIntent.getService(b, lalu, intent, 0);
    alarm.cancel(pintent);

}
}
来自mShared的崩溃日志

  java.lang.RuntimeException: Unable to start activity     ComponentInfo{com.App.pc.app/com.App.pc.app.rpr}: java.lang.NullPointerException
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
                                                                                at android.app.ActivityThread.access$800(ActivityThread.java:144)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:136)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5146)
                                                                                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:732)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
                                                                                at dalvik.system.NativeStart.main(Native Method)
                                                                             Caused by: java.lang.NullPointerException
                                                                                at com.App.pc.app.rpr.onCreate(rpr.java:51)
                                                                                at android.app.Activity.performCreate(Activity.java:5231)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 
                                                                                at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:136) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5146) 
                                                                                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:732) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 
                                                                                at dalvik.system.NativeStart.main(Native Method) 
调用mShared.getFromSP(“conrtacts”)时,主活动上getFromSP的崩溃日志

FATAL EXCEPTION: main
                                                                        Process: com.App.pc.app, PID: 8181
                                                                        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.App.pc.app/com.App.pc.app.About}: java.lang.NullPointerException
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
                                                                            at android.app.ActivityThread.access$800(ActivityThread.java:144)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5146)
                                                                            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:732)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
                                                                            at dalvik.system.NativeStart.main(Native Method)
                                                                         Caused by: java.lang.NullPointerException
                                                                            at com.App.pc.app.About.onCreate(About.java:75)
                                                                            at android.app.Activity.performCreate(Activity.java:5231)
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 
                                                                            at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:136) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5146) 
                                                                            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:732) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 
                                                                            at dalvik.system.NativeStart.main(Native Method)

看起来您在使用之前没有等待服务绑定it@nbaroz您建议用什么方式等待它?在调用服务connect bind和onServiceConnected之前,mShared为null。因此,我建议您从onServiceConnected而不是onCreate使用它