Ich möchte eine einfache statische Methode erstellen, die mir den nächsten geplanten Alarm vom aktuellen Telefon bekommt. Implementiert nicht statisch, in der Main_Activity
funktioniert alles wie vorgesehen, aber jetzt in einer separaten Klasse als statische Methode bekomme ich den Fehler: "android.content.Context.getContentResolver()" auf eine Null-Objekt Referenz ".Understanding Android Context: (Null Objektreferenz)
Ich denke, ich verstehe nicht Context
gut genug. Ich fand dies: Static way to get 'Context' on Android? aber ich denke nicht, dass es der richtige Weg ist, es hier zu tun, ich denke, ich vermisse gerade etwas, kann jemand helfen?
import android.os.Bundle;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
public class Controller extends AppCompatActivity {
private static Controller staticController = new Controller();
/**
* Finds out what the next user scheduled alarm is.
*
* @return (String) next time the user has scheduled an alarm on his device.
*/
protected static String nextAlarm() {
String nextAlarmTime = null;
// deprecated method will also detect non native alarm clocks!
nextAlarmTime = Settings.System.getString(staticController.getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED);
// fallback if deprecated method does not find valid alarm time!
// if (nextAlarmTime == null) {
// AlarmManager am = (AlarmManager) staticController.getSystemService(Context.ALARM_SERVICE);
// AlarmManager.AlarmClockInfo alarmInfo = am.getNextAlarmClock();
// Long alarm_next = alarmInfo.getTriggerTime();
// nextAlarmTime = (new Date(alarm_next)).toString();
// }
return nextAlarmTime;
}
// Do I need onCreate here ?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
(ich weiß nicht, ob dies wichtig ist, aber die Controller Klasse atm nicht in der Manifest-Datei als Aktivität enthält. Ich habe gerade eine neue Klasse und von AppCompatActivity erweitert)
Was genau ist 'Controller'? Warum gibst du keinen 'Context' (oder' ContentResolver') als Parameter an 'nextAlarm()'? – CommonsWare
Übergeben Sie den Kontext an einfache Klasse über Konstruktor und verwenden Sie – Haroon