1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Activity im Preferences-Layout

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Blobby, 06.03.2011.

  1. Blobby, 06.03.2011 #1
    Blobby

    Blobby Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    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: 06.03.2011
  2. maniac103, 06.03.2011 #2
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    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.
     
  3. Blobby, 06.03.2011 #3
    Blobby

    Blobby Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    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.
     
  4. maniac103, 07.03.2011 #4
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Ich hab die PreferenceActivitiy auch schon als Haupt-Activity benutzt, da gibt's AFAICS kein Problem damit.
     
  5. Blobby, 08.03.2011 #5
    Blobby

    Blobby Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    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?
     
  6. maniac103, 08.03.2011 #6
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Hast du die neue Activity ins AndroidManifest.xml eingetragen?
     
  7. Blobby, 08.03.2011 #7
    Blobby

    Blobby Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Ja. Ich kann den Fehler aber einfach nicht nachvollziehen!
     
  8. Blobby, 09.03.2011 #8
    Blobby

    Blobby Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    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: 09.03.2011
  9. Blobby, 20.03.2011 #9
    Blobby

    Blobby Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    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);
    
     

Diese Seite empfehlen