AlarmManager.setRepeating()上的NullPointerException-ElapsedRealTime-Android

AlarmManager.setRepeating()上的NullPointerException-ElapsedRealTime-Android,android,sdk,nullpointerexception,background-service,elapsedtime,Android,Sdk,Nullpointerexception,Background Service,Elapsedtime,我正在开发一款android应用程序,每5秒打开/关闭一次wifi(5秒仅用于测试) 如果此信息有用:我正在为此应用程序使用NavigationDrawer。我正在为此使用elapsedRealTime警报。用户从下拉列表中选择时间,选择时间后,应用程序打开/关闭wifi。例如:当他(用户)从下拉列表(微调器)中选择30分钟时,wifi应在30分钟后打开/关闭。我想我已经实现了一切(比如BroadcastReceiver,IntentService) 我的代码,如果它有帮助。 下面是如何调用我的

我正在开发一款android应用程序,每5秒打开/关闭一次wifi(5秒仅用于测试) 如果此信息有用:我正在为此应用程序使用NavigationDrawer。我正在为此使用elapsedRealTime警报。用户从下拉列表中选择时间,选择时间后,应用程序打开/关闭wifi。例如:当他(用户)从下拉列表(微调器)中选择30分钟时,wifi应在30分钟后打开/关闭。我想我已经实现了一切(比如
BroadcastReceiver
IntentService

我的代码,如果它有帮助。
下面是如何调用我的
SpinnerTimeOnItemSelectedListener

public class TweaksFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_tweaks, container, false);
    addListenerOnSpinnerItemSelection();
    return view;
}

public void addListenerOnSpinnerItemSelection(){
    spinnerSelectTime = (Spinner) view.findViewById(R.id.spinner_select_time);
    spinnerSelectTime.setOnItemSelectedListener(new SpinnerTimeOnItemSelectedListener());
}

SpinnerTimeOnItemSelectedListener中
我正在创建报警并在报警后执行
广播接收器

   public class SpinnerTimeOnItemSelectedListener extends Activity implements AdapterView.OnItemSelectedListener {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        if(parent.getItemAtPosition(position).toString().equals("Zeit auswählen") || parent.getItemAtPosition(position).toString().equals("Select Time")){
            //onNothingSelected(parent);
Toast.LENGTH_SHORT).show();
        } else if (parent.getItemAtPosition(position).toString().equals("30min")){
            alarm(parent);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    public void alarm(AdapterView<?> parent) {
        try {
            Toast.makeText(parent.getContext(), "alarm() is called", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(this, BroadCastReceiver.class);
            PendingIntent mAlarmSender = PendingIntent.getBroadcast(this, 0, intent, 0);
            long firstTime = SystemClock.elapsedRealtime(); 
            AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
            am.setRepeating(AlarmManager.ELAPSED_REALTIME,
                    firstTime, 10, mAlarmSender);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
}

我的
BackgroundService
课程

public class BroadCastReceiver extends WakefulBroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {
    Toast.makeText(context, "BroadCastReceiver is running", Toast.LENGTH_SHORT).show();
    startWakefulService(context,new Intent(context, BackgroundService.class));
}
public class BackgroundService extends IntentService {

public BackgroundService() {
    super("BackgroundService");
}
private WifiManager wifiManager;
@Override
protected void onHandleIntent(Intent intent) {
    // Hier kommt der Code zum ein und ausschalten (von z.B. wifi)
    // Ein Intentservice gibt nichts auf der UI aus
    wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
    if (wifiManager.isWifiEnabled()) {
        wifiManager.setWifiEnabled(false);
    } else {
        wifiManager.setWifiEnabled(true);
    }
}
}
我的清单文件

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.selfmade.ali.wifionoffer" >
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MyActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

    <activity android:name=".SpinnerTimeOnItemSelectedListener" ></activity>
    <activity android:name=".ElapsedRealtimeAlarm"></activity>

    <receiver android:name=".BroadCastReceiver" ></receiver>
    <service android:name=".BackgroundService" android:exported="false" android:enabled="true" ></service>
</application>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

我有这个问题已经3天了,我希望有人能帮助我

SpinnertimeonimselectedListener
不应该是
活动
的子类。请查看帮助以查明您的问题,以便其他人能更轻松地帮助您。@MikeM。当我删除活动时,我会出现更多错误。例如,在这一行
am=(AlarmManager)getSystemService(ALARM\u服务)出现此错误:
无法解析Method getSystemService(?)
使
SpinnerTimeOnItemSelectedListener
成为包含微调器的活动或片段的内部类。将
alarm()
方法移动到活动/片段,并去掉
AdapterView
参数。如果它在活动中,它将按原样工作。如果是片段,请使用
getActivity().getSystemService()
。还从清单中删除
SpinnerTimeOnItemSelectedListener
条目。我删除了
onCreate
,并将代码
am=…
移动到
alarm()
并使用
am=(AlarmManager)parent.getContext().getSystemService(Context.alarm\u服务)并知道它正在工作。谢谢但仍然存在一个问题:现在没有例外或错误。10秒后,他没有执行我的PendingEvent,因为在我的
BroadCastReceiver
课程中,我在开始时有一个祝酒词(代码在上面)。问题可能是什么?如何解决?
07-27 15:24:29.490  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ java.lang.NullPointerException
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at com.selfmade.ali.wifionoffer.SpinnerTimeOnItemSelectedListener.alarm(SpinnerTimeOnItemSelectedListener.java:93)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at com.selfmade.ali.wifionoffer.SpinnerTimeOnItemSelectedListener.onItemSelected(SpinnerTimeOnItemSelectedListener.java:38)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at android.widget.AdapterView.fireOnSelected(AdapterView.java:956)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at android.widget.AdapterView.access$200(AdapterView.java:49)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:920)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at android.os.Looper.loop(Looper.java:157)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5356)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
07-27 15:24:29.500  20446-20446/com.selfmade.ali.wifionoffer W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
07-27 15:24:51.692  20446-20446/com.selfmade.ali.wifionoffer W/IInputConnectionWrapper﹕ getExtractedText on inactive InputConnection
07-27 15:24:51.692  20446-20446/com.selfmade.ali.wifionoffer W/IInputConnectionWrapper﹕ getTextBeforeCursor on inactive InputConnection
07-27 15:24:51.702  20446-20446/com.selfmade.ali.wifionoffer W/IInputConnectionWrapper﹕ getSelectedText on inactive InputConnection
07-27 15:24:51.702  20446-20446/com.selfmade.ali.wifionoffer W/IInputConnectionWrapper﹕ getTextAfterCursor on inactive InputConnection