Ich habe mir eine App erstellt, die ein recht einheitliches Design nutzt. Zur Unterscheidung einzelner Elemente gibt es 3 sehr ähnliche Farben, die nur verschieden hell/dunkel sind. Diese sind in einer colors.xml und ich greife per @color/defcolor usw. darauf zu. Nun möchte ich per Einstellungsseite diese Farben ändern. D.h. jetzt sind sie orange, danach sollen sie grün sein, je nach dem, wie der Nutzer es eben möchte. Nur kann man ja nicht einfach die Werte der Resource ändern? Ich dachte daran, die Farben in den SharedPrefs zu speichern, aber auf die kann ich ja nicht aus den layout.xml-Dateien zugreifen? Wie soll ich es machen?
Beim Aufruf der Activity alle Farben "von Hand" ädern wäre etwas aufwendig für den geringen Nutzen und ich denke mir, dass es doch irgendeine vernünftige Möglichkeit geben muss. Gibt es sie?
Vielen Dank für alle Arten von Antworten
Beiträge von LuLeBe
-
-
Hmm, ich habs
Die methode muss natürlich public sein, damit sie von außerhalb angesprochen werden kann...wie kann man nur so dumm sein. -
Hmm, sonst klappt das aber eigentlich. Im button onClick: "funktion" und dann
private void funktion(View view) {
funktionstext}Was müsste ich denn anders machen? Also wie implementiere einen OnClickListener?
-
Hallo,
ich habe vor kurzem meine ersten kleinen Übungen bei Apps fertiggestellt und möchte nun eine App erstellen, die zu unserem Lateinbuch aus der Schule passt. D.h. ich habe eine Datenbank mit allen Wörtern und die Funktionen Suche, Wörter anschauen und Wörter abfragen. Nun stoße ich bei der Abfrage-Option auf ein Problem:
Ich hole mir erst per SQL die Daten zu den Vokabeln, das sieht je nach gewählter Seite so aus:So, das ergibt ganz sicher mehrere Datensätze (die Abfragefunktion listet mir 15 Stück auf), die ich nun in einen Cursor lade, der dann per onClick() jeweils eine Zeile ausgeben soll, sodass man immer eine Vokabel der Seite auf dem Bildschirm sieht:
Java
Alles anzeigenprivate void ladeWoerter() { woerterCursor = mDatenbank.rawQuery(sqlWoerter, null); woerterCursor.moveToFirst(); } private void nextVok(View view) { if(woerterCursor.moveToNext()) { latein = woerterCursor.getString(woerterCursor.getColumnIndex("latein")); deutsch = woerterCursor.getString(woerterCursor.getColumnIndex("deutsch")); zusatz = woerterCursor.getString(woerterCursor.getColumnIndex("zusatz")); eigen = woerterCursor.getString(woerterCursor.getColumnIndex("eigen")); //einsetzen lateine.setText(latein); deutsche.setText(deutsch); zusatze.setText(zusatz); eigene.setText(eigen); } else { //TODO } }
(lateine, deutsche, zusatze und eigene stehen für TextView-Felder)wenn ich nextVok() in der ladeWoerter()-Methode aufrufe, funktioniert es. Wenn aber in der Layout.xml ein Button als onClick-Attribut "nextVok" hat, stürzt die App ab. Der Debugger meint, dass es eine "IllegalStateException" gibt:
Java02-05 06:24:20.686: E/AndroidRuntime(11496): FATAL EXCEPTION: main 02-05 06:24:20.686: E/AndroidRuntime(11496): java.lang.IllegalStateException: Could not find a method nextVok(View) in the activity class de.lulebe.latein.FragenActivity for onClick handler on view class android.widget.Button with id 'button2'
Für mich bedeutet dieser Fehler, dass keine passende Methode gefunden wurde. Aber ich habe doch eine erstellt. Wo liegt der Fehler?