Activity im Preferences-Layout

B

Blobby

Gast
Hey,

Ich bin relativ neu in der Android- und Java-Entwicklung und hab mir in letzter Zeit viel angelesen. Doch sind das nur Grundkentnisse, die mir nicht immer helfen, darum komme ich jetzt mal zu euch.

Ich habe vor meine App so aufzubauen, dass es genau wie das normale Preferences-Menu aussieht. Ganz einfach, weil es schlicht und dem Benutzer bereits bekannt ist.

Das Nachstellen des Designs ist erstmal relativ einfach. Was man braucht sind eigentlich nur 4 Elemente:

  • Header (Text mit farbigem Hintergrund)
  • Textelemente (Text mit Überschrift und darunter kleinerer Text mit Erklärung)
  • Checkboxelemente (Text mit Überschrift, darunter kleinerer Text mit Erklärung und daneben eine Checkbox)
  • Buttonelemente (Text mit Überschrift und darunter kleinerer Text mit Erklärung)
Der Punkt wo ich ins Grübeln komme, liegt bei den letzten beiden Elementen. Wie schaffe ich es, die Elemente als ein Ganzes zu betrachten. Wenn ich es aus mehreren einzelnen Buttons mache, wäre es unschön beim Aktivieren und unpraktisch beim Programmieren. In den Preferences funktioniert das ohne Weiteres. Auch das Aussehen der Buttonelemente macht mir etwas Sorgen, da sie ja immernoch den Standart-Button-Look haben und nicht an den Listen-Look erinnern.

Außerdem beschäftigt mich, wie ich das ganze elegant verpacke. Ich kann natürlich die Listentrennung manuell mit einer Grafik erreichen, aber frage ich mich, ob es da nicht noch eine von Android bereitgestellte Funktion gibt.
 
Zuletzt bearbeitet von einem Moderator:
Hast du dir schon mal die PreferenceActivity zu Gemüte geführt? Die sollte genau das sein, was du suchst.
Die Widgets, die du da rein packen kannst, findest du im Package android.preference.
 
maniac103 schrieb:
Hast du dir schon mal die PreferenceActivity zu Gemüte geführt? Die sollte genau das sein, was du suchst.
Die Widgets, die du da rein packen kannst, findest du im Package android.preference.

Ist das nicht nur ausschließlich für die Preferences gedacht? Was ich will ist ja eine ganz normale Activity, die nur das Aussehen der Preferences hat.
 
Blobby schrieb:
Ist das nicht nur ausschließlich für die Preferences gedacht? Was ich will ist ja eine ganz normale Activity, die nur das Aussehen der Preferences hat.
Ich hab die PreferenceActivitiy auch schon als Haupt-Activity benutzt, da gibt's AFAICS kein Problem damit.
 
maniac103 schrieb:
Ich hab die PreferenceActivitiy auch schon als Haupt-Activity benutzt, da gibt's AFAICS kein Problem damit.

Hmmm. Ich hab mich mal in den References durchgelesen, glaube aber, dass ich es noch nicht agnz verstanben habe. Ich hab jetzt einfach mal probiert das Programm zu schreiben (Learning-By-Doing halt).

Ich hab also in Eclipse erstmal mein Project erstellt mit der Start-Activity Main. Die hab ich dann auch mal direkt wieder gelöscht und eine neue Preference-Activity namens Main erstellt. Schnell ein @Override mit onCreate um mit addPreferencesFromResource(R.xml.main); die spätere xml zu laden. Dem Android-Manifest habe ich PreferenceActivity auch als Activity bekannt gemacht und als Launch-Activity deklariert.

Die alte layout main.xml habe ich gelöscht, weil sie ja nicht mehr gebraucht wird und habe eine neue main.xml im Ordner xml erstellt. Dort habe ich dann einen PreferenceScreen mit 3 Preference-Objekten reingeschrieben. Jeweils nur ein Titel dazu mit string-Verweis.

Jetzt will ich die App debuggen, doch startet sie erst gar nicht. Der Konsole kann ich entnehmen, dass die Class Main wohl nicht existiert.

Was habe ich falsch gemacht?
 
Blobby schrieb:
Hmmm. Ich hab mich mal in den References durchgelesen, glaube aber, dass ich es noch nicht agnz verstanben habe. Ich hab jetzt einfach mal probiert das Programm zu schreiben (Learning-By-Doing halt).

Ich hab also in Eclipse erstmal mein Project erstellt mit der Start-Activity Main. Die hab ich dann auch mal direkt wieder gelöscht und eine neue Preference-Activity namens Main erstellt. Schnell ein @Override mit onCreate um mit addPreferencesFromResource(R.xml.main); die spätere xml zu laden. Dem Android-Manifest habe ich PreferenceActivity auch als Activity bekannt gemacht und als Launch-Activity deklariert.

Die alte layout main.xml habe ich gelöscht, weil sie ja nicht mehr gebraucht wird und habe eine neue main.xml im Ordner xml erstellt. Dort habe ich dann einen PreferenceScreen mit 3 Preference-Objekten reingeschrieben. Jeweils nur ein Titel dazu mit string-Verweis.

Jetzt will ich die App debuggen, doch startet sie erst gar nicht. Der Konsole kann ich entnehmen, dass die Class Main wohl nicht existiert.

Was habe ich falsch gemacht?
Hast du die neue Activity ins AndroidManifest.xml eingetragen?
 
maniac103 schrieb:
Hast du die neue Activity ins AndroidManifest.xml eingetragen?
Blobby schrieb:
Dem Android-Manifest habe ich PreferenceActivity auch als Activity bekannt gemacht und als Launch-Activity deklariert.

Ja. Ich kann den Fehler aber einfach nicht nachvollziehen!
 
Danke! Hat sich erledigt. Es war einfach zwischen Schlusstag vom Intent-Filter und der Activity im Manifest ein ">" gerutscht, mit dem der Compiler natürlich nichts anfangen konnte.
 
Zuletzt bearbeitet von einem Moderator:
Hey,

Danke noch mal für eure Hilfe beim ersten Problem. Ich hab jetzt leider ein anderes Problem, was aber eng mit dem ersten zusammenhängt.

Ich hab eine Preference die ich mit einem in der Activity (also der Class) erstellten Layout füttern will. Die einzige Möglichkeit sehe ich da durch "setLayoutresource", aber benötige ich dort ja aber eine Resource.

Die eigentliche Frage ist also: "Wie wandle ich mein Layout so um, dass es von der Methode angenommen wird?" oder "Gibt es eine andere Möglichkeit mein erstelltes Layout zu verwenden?"

Hier mal ein Codeschnipsel vom Programm zur Verdeutlichung:

Code:
EditText ed = (EditText) findViewById(R.id.ed_dialog);
                        Integer zeilen = Integer.parseInt(ed.getText().toString());
                        Integer spalten = Integer.parseInt(ed.getText().toString());
                        TableLayout layout1 = new TableLayout(MatritzenrechnungAddition.this);
                        for  (int z = 0; z < zeilen; z++) {
                            TableRow row = new TableRow(Main.this);
                            layout1.addView(row);
                            for (int s = 0; s < spalten; s++) {
                                EditText edit = new EditText(Main.this);
                                row.addView(edit);
                            }
                        }
                        findPreference("Preference").setLayoutResource(layout1);
 

Ähnliche Themen

D
  • djsnoopy
Antworten
6
Aufrufe
613
djsnoopy
D
L
Antworten
4
Aufrufe
1.329
lonnie9020
L
S
Antworten
8
Aufrufe
508
swa00
swa00
Zurück
Oben Unten