2016-04-07 20 views
0

Ich habe eine ListView und Listen Elemente darin. Ich habe eine onItemCLick so eingestellt, dass, wenn der Benutzer auf dem ersten Listenelement klickt, eine neue Activity öffnet das ist ein PreferenceActivity:Öffnen Sie eine andere Präferenz Aktivität aus jedem Listenansicht Element

Intent p = new Intent(this, Settings.class);    
startActivity(p); 

Wenn ich auf der zweiten Liste Element klicken, es öffnet auch die gleiche PreferenceActivity wie im ersten Listenelement. Wenn ich also die Einstellungen des ersten Listenelements ändere, sehe ich diese Änderungen, wenn ich auf das zweite Listenelement klicke. Ich verstehe, dass es im Grunde die gleiche Activity jedes Mal öffnet. Kann jemand bitte helfen, verschiedene Präferenzaktivitäten für jeden Listenelementklick zu öffnen.

Ich denke, ich sollte eine putExtra() in der Intent vor dem Öffnen der PreferenceActivity verwenden. Aber ich bin nicht sicher, was ich setzen und wie man es in der PreferenceActivity verwenden soll. Kann mir bitte jemand helfen. Ist das überhaupt der richtige Ansatz?

+0

Behält Ihre 'PreferenceActivity' einige Einstellungen für Ihre' SharedPreferences' nicht bei? Sie werden also immer eine Darstellung der gleichen Einstellungen auf Ihrem Gerät sehen. Ich weiß nicht wirklich, was Sie erreichen wollen, aber es gibt wahrscheinlich einen besseren Weg. –

+0

Möchten Sie keine andere PreferenceActivity erstellen? oder was versuchst du zu erreichen? Brauchen Sie die gleichen Optionen, aber mehrere Male oder verschiedene Optionen? – Nanoc

+0

@ NielsMasdorp, @ Nanoc, Jeder Listeneintrag in der Listenansicht ist ein Alarm. Also im Grunde hat jeder Listeneintrag seine eigenen Vorlieben wie Zeit, Klingelton usw. Ich möchte also, dass jeder Listeneintrag seine eigenen Präferenzen öffnet. Ich bin neu in diesem Bereich. Kommentare sind willkommen. Danke – Subhash

Antwort

0

Senden Sie die Kennung für den Alarm an Ihre PreferenceFragment, rufen Sie sie in der onCreate() und dynamisch erstellen Sie Ihre Präferenzen von dort.

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

    Bundle bundle = getIntent().getExtras(); 
    int alarmId = bundle.getString("alarmId"); 

    PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(getActivity()); 
    setPreferenceScreen(screen); 

    PreferenceCategory category = new PreferenceCategory(screen.getContext()); 
    category.setTitle("Preferences for alarm " + alarmId); 
    screen.addPreference(category); 

    //For example create a checkbox preference 
    CheckBoxPreference checkBoxPref = new CheckBoxPreference(screen.getContext()); 
    checkBoxPref.setKey("checkbox_alarm_" + alarmId); 
    checkBoxPref.setTitle("Checkbox for alarm " + alarmId); 

    category.addPreference(checkBoxPref); 
} 

nur eine Erinnerung Sie wahrscheinlich alle gemeinsamen Vorlieben für einen Alarm entfernen, werden Sie wollen, wenn Sie auch einen bestimmten Alarm entfernen.

+0

Vielen Dank. Das funktioniert perfekt. – Subhash

Verwandte Themen