1. mario1988, 01.04.2011 #1
    mario1988

    mario1988 Threadstarter Neuer Benutzer

    Ich hätte eine Frage bezüglich des JavaScriptInterfaces:
    Ist es möglich über eine JS-Funktion in einem WebView den window Title des Activity zu ändern?

    thx 4 help
    m4ri0
     
  2. funcoder, 02.04.2011 #2
    funcoder

    funcoder Erfahrener Benutzer

    Mh schau dir mal das Beispiel an.
    Hier wird das Binding von Javascript Code an deine Android Activity anhand einem "Toast-Sample" erklärt. (Mitte der Seite)
    Du müsstest nur das Toast Sample abwandeln bzw. den String in deinem Interface als Activity Title setzen.
     
  3. mario1988, 02.04.2011 #3
    mario1988

    mario1988 Threadstarter Neuer Benutzer

    Danke für die Antwort!

    Ja, in der Form hab ich es probiert.
    Allerdings bekomme ich eine UnsupportedOperationException, wenn ich versuche den Title zu setzen.
    Code:
        private class MyJavaScriptInterface {
            
            private MyJavaScriptInterface() {
            }
            
            /* JavaScript-Methode, die auf der XHTML-Seite aufgerufen wird */
            public void setTitle(String text) {
                Atomic.this.setTitle(text);
            }
        }
    
    Komme ich irgendwie von dem Context zum Title?
    Weil offensichtlich funktioniert das mit dem Aufruf von setTitle hier in der Art und Weise nicht.

    thx 4 help
     
  4. funcoder, 02.04.2011 #4
    funcoder

    funcoder Erfahrener Benutzer

    Ah okay, dass ist das Problem :)
    Mh probier einfach mal folgendes:
    Code:
    getWindow().setTitle(text);
     
  5. mario1988, 02.04.2011 #5
    mario1988

    mario1988 Threadstarter Neuer Benutzer

    Kommt leider die gleiche Exception...
     
  6. mario1988, 02.04.2011 #6
    mario1988

    mario1988 Threadstarter Neuer Benutzer

    Wobe ich eines nicht verstehe:
    Das schließen des Activity funktioniert aus JS heraus:
    Code:
    /* JavaScript-Interface */
        private class MyJavaScriptInterface {
            Context mContext;
            
            private MyJavaScriptInterface(Context c) {
                this.mContext = c;
            }
            
            /* JavaScript-Methoden, die auf der XHTML-Seite aufgerufen werden */
            @SuppressWarnings("unused")
            public void setTitle(String text) {
                Activity a = (Activity)mContext;
                //a.setTitle(text);
                a.getWindow().setTitle(text);
            }
            
            @SuppressWarnings("unused")
            public void close() {
                Activity a = (Activity)mContext;
                a.finish();
            }
        }
    
     
  7. mario1988, 02.04.2011 #7
    mario1988

    mario1988 Threadstarter Neuer Benutzer

    Lösung:
    Da nur der Thread, der "Die View-Hierarchie aufgebaut hat", diese auch verändern darf, braucht man in diesem Fall, um den Title des Activity von hier zu setzen, einen Handler, über diesen man eine Message von einem zum anderen Thread schicken kann.

    m4ri0