-4

In meiner Anwendung habe ich die Einstellungen Präferenz in XML-Ordner und zugewiesen Präferenzmanager mit der Methode zugewiesen. Aber wenn im Versuch, Werte erhalten von dem SharedPreferences es Null-Zeiger-Ausnahme zu werfen ....Nullzeiger-Ausnahme beim Abrufen von Werten aus Einstellungseinstellung erhalten

public class RemindMe extends Application { 

// private static final String TAG = "RemindMe"; 

    public static SqliteServiceProvider dbHelper; 
    public static SQLiteDatabase db; 
    public static SharedPreferences sp; 

    public static final String TIME_OPTION = "time_option"; 
    public static final String DATE_RANGE = "date_range"; 
    public static final String DATE_FORMAT = "date_format"; 
    public static final String TIME_FORMAT = "time_format"; 
    public static final String VIBRATE_PREF = "vibrate_pref"; 
    public static final String RINGTONE_PREF = "ringtone_pref"; 

    public static final String DEFAULT_DATE_FORMAT = "yyyy-M-d"; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     PreferenceManager.setDefaultValues(this, R.xml.settings, false); 
     sp = PreferenceManager.getDefaultSharedPreferences(this); 

     dbHelper = new SqliteServiceProvider(this); 
     db = dbHelper.getWritableDatabase();   
    } 

    public static boolean showRemainingTime() { 
     return "1".equals(sp.getString(TIME_OPTION, "0")); 
    } 

    public static int getDateRange() { 
     return Integer.parseInt(sp.getString(DATE_RANGE, "0")); 
//  return 0; 
    } 

    public static String getDateFormat() { 
     return sp.getString(DATE_FORMAT, DEFAULT_DATE_FORMAT); 
    } 

    public static boolean is24Hours() { 
     return sp.getBoolean(TIME_FORMAT, true); 
    } 

    public static boolean isVibrate() { 
     return sp.getBoolean(VIBRATE_PREF, true); 
    } 

    public static String getRingtone() { 
     return sp.getString(RINGTONE_PREF, android.provider.Settings.System.DEFAULT_NOTIFICATION_URI.toString()); 
    } 

} 

und hier ist meine Einstellungen preferrence

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <PreferenceCategory android:title="Display Settings"> 

     <ListPreference android:key="time_option" 
      android:title="Display Time" 
      android:summary="Actual" 
      android:entries="@array/time_option_arr" 
      android:entryValues="@array/val_arr" 
      android:defaultValue="0" /> 

     <ListPreference android:key="date_range" 
      android:title="Date Range" 
      android:summary="Daily" 
      android:entries="@array/date_range_arr" 
      android:entryValues="@array/val_arr" 
      android:defaultValue="0" /> 

     <ListPreference android:key="date_format" 
      android:title="Date Format" 
      android:summary="yyyy-M-d" 
      android:entries="@array/date_format_arr" 
      android:entryValues="@array/date_format_arr" 
      android:defaultValue="yyyy-M-d" /> 

     <CheckBoxPreference android:key="time_format" 
      android:title="Time Format" 
      android:summary="Use 24-hour format" 
      android:defaultValue="true" /> 

    </PreferenceCategory> 

    <PreferenceCategory android:title="Notification Settings"> 

     <CheckBoxPreference android:key="vibrate_pref" 
      android:title="Vibrate" 
      android:summary="Vibrate on notification" 
      android:defaultValue="true" /> 

     <RingtonePreference android:key="ringtone_pref" 
      android:title="Set Ringtone" 
      android:summary="Default" 
      android:ringtoneType="all" 
      android:showDefault="true" 
      android:showSilent="false" /> 

     <!--Preference android:key="about_pref" 
      android:title="About" 
      android:summary="Credits" /--> 

    </PreferenceCategory> 

</PreferenceScreen> 

hier ist die stacktrace ...

FATALE AUSNAHME: Haupt java.lang.RuntimeException: Kann die Aktivität nicht fortsetzen {info.androidhive.navigationdrawer/info.androidhive.navigationdrawer.task_classes.AddAlarmActi Vity}: java.lang.NullPointerException bei android.app.ActivityThread.performResumeActivity (ActivityThread.java:2943) bei android.app.ActivityThread.handleResumeActivity (ActivityThread.java:2972) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2407) bei android.app.ActivityThread.access $ 600 (ActivityThread.java:162) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1368) bei android.os.Handler.dispatchMessage (Handler.java:107) bei android.os.Looper.loop (Looper.java:194) bei android.app.ActivityThread.main (ActivityThread.java:5410) bei java.lang.reflect.Method.invokeNative (Native Methode) bei java.lang.reflect.Method.invoke (Methode.java:525) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit .java: 833) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:600) bei dalvik.system.NativeStart.main (native Methode) verursacht durch: java.lang.NullPointerException an info .androidhive.navigationdrawer.task_classes.RemindMe.getDateFormat (RemindMe.java:53) bei info.androidhive.navigationdrawer.task_classes.AddAlarmActivity.onResume (AddAlarmActivity.java:147) bei android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1190) bei android.app.Activity.performResume (Activity.java:5200) bei android.app.ActivityThread.performResumeActivity (ActivityThread.java:2930) bei android.app.ActivityThread.handleResumeActivity (ActivityThread.java:2972) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2407) bei android.app.ActivityThread.access $ 600 (ActivityThread.java:162) bei Android .app.ActivityThread $ H.handleMessage (ActivityThread.java:1368) bei android.os.Handler.dispatchMessage (Handler.java:107) bei android.os.Looper.loop (Looper.java:194) bei android.app.ActivityThread.main (ActivityThread.java:5410) bei java.lang.reflect.Method.invokeNative (native Methode) bei java .lang.reflect.Method.invoke (Methode.java:525) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:833) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 600) bei dalvik.system.NativeStart.main (native Methode)

+1

wo ist der Stacktrace? lies [this] (http://stackoverflow.com/q/218384/2745495) dann versuche es selbst zu debuggen zuerst von der Ablaufverfolgung. die NPE wird Sie auf eine Variable verweisen, die Sie wahrscheinlich vergessen haben zu initialisieren oder nicht richtig eingestellt ist –

+1

haben Sie die [Link auf NPEs] (http://stackoverflow.com/q/218384/2745495) überprüft? lese die Spur, es gibt eine '' 'NullPointerException..at RemindMe.getDateFormat (RemindMe.java:53)' '' –

Antwort

1

Haben Sie in Ihrem AndroidManifest.xml die den Namen Ihres Application Klasse vergessen hinzuzufügen?

<manifest 
    ... 
    <application 
     name=".RemindMe" 
    ... 
    </application> 
</manifest> 
+0

Vielen Dank ............. Ich habe vergessen, es in Manifest hinzuzufügen. ....es funktioniert jetzt.... –

Verwandte Themen