2012-06-06 15 views
6

Ich folgte alle Schritte in der grundlegenden Phonegap-Tutorial (Eclipse, Android SDK, ADT Phonegap), erstellte ich eine HMTL-Seite im Ordner Assets/Www, lief es, und es zeigte meine hello world html.Phonegap funktioniert nicht in Android Emulator

Schritt 2: Ich habe einen Verweis auf jQuery Mobile auf einem CDN in meiner HTML-Seite hinzugefügt: es hat funktioniert.

Schritt 3: Ich erstellte eine neue HTML-Seite, kopierte den folgenden Code, der ein Beispiel von der Phonegap-Site ist, und es tut nichts. Nicht einmal eine Warnung (ich habe noch einige Warnungen zu sehen, wenn etwas passiert, aber selbst das onDeviceReady Ereignis nicht ausgelöst.

Ich habe die Phonegap JAR vorhanden, die cordova-1.7.0.js in meinem assest/www Verzeichnis, aber etwas ist wahrscheinlich fehlt.

Kann mir jemand?

hilft ich habe auch versucht, eine andere Probe aus der Phonegap Website (die ‚Geräteeigenschaften‘ Probe), aber es funktioniert immer noch nicht.

es ist eine neue Eclipse installieren, Ich habe die Android-Version auf 2.3.3 eingestellt und verwende Phonegap 1.7.0.

================

EDIT

habe ich versucht, etwas mehr, und ich kann jetzt den Fehler reproduzieren, aber weiß nicht, warum es passiert .

Also habe ich ein neues Projekt mit dem Phonegap Beispielprojekt erstellt, es funktioniert.

Also kopierte ich alle Assets aus diesem Projekt (1 html, 2 js und 1 css) in meine Projekte, lass die App mit diesem html starten (aus meiner Aktivitätsklasse), und es funktioniert.

Und jetzt für den Spaß Teil (nicht): Ich setze die Startseite auf meine "alte" index.html (das ist jQuery mobile), und dann auf einen Link zum Beispiel html geklickt, funktioniert es nicht.

Also Beispiel html als Start: es funktioniert, Beispiel html über den Link geöffnet: funktioniert nicht.

Und als ich meine anderen HTML-Seiten geladen habe, die nicht als Startseite funktionierten, funktionieren sie auch, anstatt sie über die Startseite zu öffnen.

Also, ist es möglich, dass meine jQuery Mobile-powered Indexseite Probleme verursacht? (Ich kopiere den Code unten).

EDIT2: Wenn ich eine nicht-jQuery Mobile Indexseite verwende und ich eine Verbindung mit einem normalen <A href> Link zum Beispiel html, funktioniert es auch. Das deutet mehr und mehr auf die Tatsache hin, dass jQuery mobile mir in den Weg kommt ...

Der Link-Code ist dies:

<li><a href="index4.html" data-transition="none">phonegap example</a></li> 

Die jQuery Mobile Homepage:

<html> 
<head> 
    <title></title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" /> 
    <link rel="stylesheet" href="http://www.verfrisser.net/kalender/mobile/verfrisser.css" /> 
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script> 
    <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script> 
</head> 
<body> 
    <div data-role="page"> 

    <div data-role="header"> 
     <h1>De NerdNight kalender</h1> 
     <a href="about.html" data-rel="dialog">About</a><a href="genereren.html" data-transition="pop">Genereren</a> 
    </div><!-- /header --> 

    <div data-role="content"> 
     <img id="verfrisserlogo" src="verfrisserlogo.png" /> 
     <ul data-role="listview" data-inset="true" data-filter="false"> 
      <li><a href="2011.html" data-transition="none">2011</a></li> 
      <li><a href="2012.html" data-transition="none">2012</a></li> 
      <li><a href="2013.html" data-transition="none">2013</a></li> 
      <li><a href="testing.html" data-transition="none">testing</a></li> 
      <li><a href="testing2.html" data-transition="none">testing2</a></li> 
      <li><a href="testing3.html" data-transition="none">testing3</a></li> 
      <li><a href="index4.html" data-transition="none">phonegap example</a></li> 
     </ul> 
    </div><!-- /content --> 

    <div data-role="footer"> 
     <h6>(C) Verfrisser 1998 till now</h6> 
    </div><!-- /footer --> 
</div><!-- /page --> 
</body> 
</html> 

================

Der Beispiel-HTML-Code (der nur den Text 'Ein Dialogfeld zeigt den Netzwerkstatus' auf der Seite anzeigt)

<!DOCTYPE html> 
<html> 
<head>  
    <title>navigator.network.connection.type Example</title>  
    <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script> 
<script type="text/javascript" charset="utf-8">  
    // Wait for Cordova to load //  
    document.addEventListener("deviceready", onDeviceReady, false); 
    // Cordova is loaded and it is now safe to make calls Cordova methods 
    alert ('stand alone'); 
    //  
    function onDeviceReady() { 
    alert ('onDeviceReady'); 
    checkConnection(); 
    }  
    function checkConnection() {   
    var networkState = navigator.network.connection.type;   
    var states = {};  
    states[Connection.UNKNOWN] = 'Unknown connection';   
    states[Connection.ETHERNET] = 'Ethernet connection';   
    states[Connection.WIFI]  = 'WiFi connection';  
    states[Connection.CELL_2G] = 'Cell 2G connection'; 
    states[Connection.CELL_3G] = 'Cell 3G connection'; 
    states[Connection.CELL_4G] = 'Cell 4G connection'; 
    states[Connection.NONE]  = 'No network connection'; 
    alert('Connection type: ' + states[networkState]); 
    } 

</script> 
</head> 
<body> 
    <p>A dialog box will report the network state.</p> 
</body> 
</html> 
+0

Haben Sie die Android Permission hinzugefügt? Hast du cordova.xml und plugins.xml in res hinzugefügt? –

+0

Ja, die Berechtigungen sind vorhanden. Die 2 XML-Dateien Ich bin mir nicht sicher, ob ich in meinem Tutorial über sie gelesen habe. Kannst du mich über sie in die richtige Richtung weisen? – Michel

+0

In Ihrem Ordner "application res" müssen Sie den Ordner xml hinzufügen, der im lib-Ordner des heruntergeladenen phonegap-Pakets vorhanden ist. Diese XML-Ordner enthält sowohl die xmls –

Antwort

9

Mit Standardverhalten wird die nächste Seite als DOM-Element geladen, so dass das Javascript deviceready nicht erneut aufgerufen wird.

mit einem dieser Wege versuchen es die normale Art und Weise auszuführen:

<li><a href="testing2.html" data-transition="none" rel="external">testing2</a></li> 

Oder

<li><a href="testing2.html" data-transition="none" data-ajax="false">testing2</a></li> 

Erläuterung:

Wenn ein Link angeklickt wird, wird jQuery Mobile machen sicher, dass der Link Verweis auf eine lokale URL ist, und wenn dies der Fall ist, wird die Standardeinstellung der Verknüpfungverhindernklicken Sie auf Verhalten auftreten und fordern Sie die referenzierte URL über Ajax stattdessen. Wenn die Seite erfolgreich zurückkehrt, wird die Position location.hash auf die relative URL der neuen Seite gesetzt.

Wenn die Ajax-Anforderung erfolgreich ist, wird der neue Seiteninhalt zum DOM hinzugefügt, alle mobilen Widgets werden automatisch initialisiert und die neue Seite wird mit einem Seitenübergang animiert.

Für weitere Detail-Informationen der doc überprüfen

+1

Y.O.U. ROCK. Ich habe dieses Problem in der letzten Woche mindestens 30 Minuten pro Tag gekämpft, habe alle möglichen Dinge ausprobiert und jedes Mal enttäuscht. Sie können sich das Lächeln auf meinem Gesicht vorstellen, wenn diese Antwort den Trick brachte! – Michel

+0

froh, dass es für Sie gearbeitet hat. – dhaval

0

Nachdem Sie die XML-Dateien hinzufügen, die @Coder_sLaY erwähnt wurde, müssen Sie den Server hinzufügen, in dem Sie die jQuery Mobile JS-Datei geladen werden (die CDN URL) auf die weiße Liste der erlaubten Server in cordova.xml

+0

Was ist die JQM-Datei? – Michel

1

Wie Soweit kein Fehler in Ihrem Code. Diese obige Codestruktur ist nicht gut konstruiert. Du hast das Handygap und Jquery Mobile JavaScript im Kopf der ersten Seite erwähnt und nicht auf der zweiten Seite. Es hat keine jquery mobile JavaScript-Datei im Kopf.

Fakten aus meinem Wissen:

  • Sie JQuery Übergang von einer jquery mobiler Seite zu einem anderen mobilen jquery tut Seite enthalten.
  • Fügen Sie die Standardbibliotheksdateien in beide Header ein.

Dies wird Ihre Arbeit erledigen.

+0

ok, ich werde geben, dass ein Versuch – Michel

+0

versucht, dass nun beide Dateien mit dem Verweis auf die cordova.js bekamen, jQuery Mobile und jquery normal, aber noch kein Glück – Michel

Verwandte Themen