0

je dois ajouter dynamiquement préférences à mon PreferenceActivity et je fais comme ça:NullPointerException tandis que les préférences qui ont été ajoutés la suppression dynamique

mFilterShow = (PreferenceScreen)getPreferenceScreen().findPreference("orderScreen"); 


public void assignmentFieldsAdd() 
{ 
    CheckBoxPreference cb1 = new CheckBoxPreference(this); 
    cb1.setTitle("Detailed explanation " + "\r\n" +"required"); 
    cb1.setKey("assign1"); 
    CheckBoxPreference cb2 = new CheckBoxPreference(this); 
    cb2.setTitle("Shoot exclusive video"); 
    cb1.setKey("assign2"); 
    CheckBoxPreference cb3 = new CheckBoxPreference(this); 
    cb1.setKey("assign3"); 
    cb3.setTitle("Shoot common video"); 
    mFilterShow.addPreference(cb1); 
    mFilterShow.addPreference(cb2); 
    mFilterShow.addPreference(cb3); 
} 

puis, je dois le supprimer sur un événement. Quand j'appelle

public void assignmentFieldsDelete() 
    { 

     mFilterShow.removePreference(mFilterShow.findPreference("assign1")); 
     mFilterShow.removePreference(mFilterShow.findPreference("assign2")); 
     mFilterShow.removePreference(mFilterShow.findPreference("assign3")); 

    } 

Je reçois un

02-05 18:14:50.159: E/AndroidRuntime(15259): FATAL EXCEPTION: main 
java.lang.NullPointerException 
    at com.assignmentexpert.AssignmentPref.assignmentFieldsDelete(AssignmentPref.java:175) 
    at com.assignmentexpert.AssignmentPref$2.onPreferenceChange(AssignmentPref.java:97) 
    at android.preference.Preference.callChangeListener(Preference.java:756) 
    at android.preference.ListPreference.onDialogClosed(ListPreference.java:219) 
    at android.preference.DialogPreference.onDismiss(DialogPreference.java:389) 
    at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1047) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:3687) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:507) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
    at dalvik.system.NativeStart.main(Native Method) 

donc il ne peut pas trouver de préférence que je créé dynamiquement. La même chose se produit quand je veux simplement appeler getPreferenceScreen().findPreference("assign1").getTitle(); Comment puis-je résoudre ce problème?

Répondre

0

Je ne trouve pas une solution précise à ma question. C'est assez bizarre que je ne puisse pas supprimer ou même trouver des préférences que j'ai ajoutées dynamiquement à mon PreferenceScreen. Dans les deux cas, j'ai NullPointerException.

Mais je trouve une solution qui a résolu mon problème. J'ai créé 2 préférences XML séparées avec tous les éléments requis. Je les ajoute et les supprime sur les événements correspondants.

1

Ami vous n'avez pas commis votre préférence donc il n'y a aucune entrée dans vos préférences partagées ..... c'est pourquoi il donne le pointeur NUll exc.

faire ce

mFilterShow.commit(); 
+0

mFilterShow c'est PreferenceScreen. Il n'y a pas de méthode de commit pour ça. –

Questions connexes