2012-06-06 55 views
6

Tôi đã làm theo tất cả các bước trong hướng dẫn Phonegap cơ bản (Eclipse, Android SDK, ADT Phonegap), tôi đã tạo một trang HMTL trong thư mục asset/www, chạy nó và hiển thị số hello world html của tôi.Phonegap không hoạt động trong trình giả lập Android

Bước 2: Tôi đã thêm một tham chiếu đến jQuery Mobile trên CDN trong trang HTML của tôi: nó hoạt động.

Bước 3: Tôi đã tạo trang html mới, sao chép mã được dán dưới đây, đây là mẫu từ trang web Phonegap và không có gì ... Thậm chí không một cảnh báo (tôi đã thêm một số cảnh báo để xem nếu có điều gì xảy ra, nhưng ngay cả những sự kiện onDeviceReady không cháy.

Tôi có JAR PhoneGap tại chỗ, cordova-1.7.0.js trong thư mục assest/www của tôi, nhưng một cái gì đó có lẽ là mất tích.

ai đó có thể giúp tôi không?

tôi cũng đã cố gắng một mẫu từ các trang web PhoneGap (mẫu 'tài sản thiết bị'), nhưng nó vẫn không hoạt động.

đó là một Eclipse tươi cài đặt, Tôi đã đặt phiên bản Android thành 2.3.3 và tôi đang sử dụng Phonegap 1.7.0.

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

EDIT

tôi đã cố gắng một số chi tiết, và bây giờ tôi có thể sao chép các lỗi, nhưng không biết tại sao nó xảy ra .

Vì vậy, tôi đã tạo một dự án mới với dự án ví dụ về Phonegap, nó hoạt động.

Vì vậy, tôi đã sao chép tất cả nội dung từ dự án đó (1 html, 2 js và 1 css) vào các dự án của tôi, cho phép ứng dụng bắt đầu bằng html đó (từ lớp hoạt động của tôi) và hoạt động.

Và bây giờ cho phần thú vị (không): Tôi đặt lại trang bắt đầu thành index.html cũ của tôi (là jQuery di động), sau đó nhấp vào liên kết đến html mẫu, nó KHÔNG hoạt động.

Vì vậy, ví dụ html khi khởi động: nó hoạt động, ví dụ html được mở qua liên kết: KHÔNG hoạt động.

Và khi tôi tải các trang html khác không hoạt động như trang bắt đầu, thay vì mở chúng thông qua trang bắt đầu, chúng cũng hoạt động.

Vì vậy, có thể trang chỉ mục được hỗ trợ bởi jQuery Mobile của tôi gây ra sự cố không? (Tôi sẽ sao chép-dán mã bên dưới).

EDIT2: Khi tôi sử dụng trang chỉ mục không phải là jQuery Mobile và tôi liên kết với liên kết thông thường <A href> đến html mẫu, nó cũng hoạt động. Vì vậy, đó là gợi ý nhiều hơn và nhiều hơn nữa vào thực tế là tôi nghĩ rằng jQuery điện thoại di động là theo cách của tôi ...

Mã liên kết là:

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

Các jQuery Mobile trang chủ:

<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> 

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

HTML mẫu (chỉ hiển thị văn bản 'Một hộp thoại sẽ báo cáo trạng thái mạng' trong trang)

<!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

Bạn đã thêm Permission Android? bạn đã thêm vào cordova.xml và plugins.xml chưa? –

+0

Vâng, các điều khoản được đưa ra. Các tập tin 2 xml tôi không chắc chắn tôi đã đọc về chúng trong hướng dẫn của tôi. Bạn có thể chỉ cho tôi đúng hướng về họ không? – Michel

+0

Trong thư mục res của ứng dụng, bạn cần phải thêm thư mục xml có trong thư mục lib của gói phần mềm điện thoại đã tải xuống. Thư mục xml này chứa cả hai xmls –

Trả lời

9

Với hành vi mặc định, trang tiếp theo sẽ được tải dưới dạng phần tử DOM để javascript deviceready sẽ không được gọi lại.

Hãy thử với một trong những cách để chạy nó theo cách thông thường:

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

Hoặc

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

Giải thích:

Khi một liên kết được nhấp, jQuery di động sẽ làm cho đảm bảo liên kết là tham chiếu URL địa phương và nếu có, nó sẽ ngăn chặn mặc định của liên kếtHành vi nhấp chuộtxuất hiện và yêu cầu url được tham chiếu qua Ajax thay thế. Khi trang trả về thành công, trang sẽ đặt vị trí .hãy chuyển đến url tương đối của trang mới.

Nếu yêu cầu Ajax thành công, nội dung trang mới được thêm vào DOM, tất cả các tiện ích di động được khởi tạo tự động, sau đó trang mới được chuyển thành chế độ xem với chuyển đổi trang.

Để biết thêm thông tin chi tiết kiểm tra doc

+1

Y.O.U. ĐÁ. Tôi đã chiến đấu vấn đề này ít nhất 30 phút mỗi ngày trong tuần qua, cố gắng tất cả mọi thứ, và thất vọng mỗi lần. Bạn có thể tưởng tượng nụ cười trên khuôn mặt của tôi khi câu trả lời này đã làm các trick! – Michel

+0

vui mừng vì nó làm việc cho bạn. – dhaval

0

Khi bạn thêm các tệp xml mà @Coder_sLaY đã đề cập, bạn cần phải thêm máy chủ từ nơi bạn đang tải tệp jQuery Mobile JS (URL CDN) vào danh sách trắng của các máy chủ được phép trong cordova.xml

+0

tệp JQM là gì? – Michel

1

không có lỗi trong mã của bạn. Cấu trúc mã trên không được xây dựng tốt. Bạn đã đề cập đến javascript trên điện thoại di động và jquery trên đầu trang đầu tiên chứ không phải ở trang thứ hai. Nó không có bất kỳ tập tin javascript di động jquery trong đầu.

kiện từ sự hiểu biết của tôi:

  • Bạn có thể làm chuyển Jquery từ một jquery trang di động khác jquery di động bao gồm trang.
  • Bao gồm các tệp thư viện chuẩn trong cả hai tiêu đề.

Điều này sẽ thực hiện công việc của bạn.

+0

ok, tôi sẽ thử rằng – Michel

+0

đã thử rằng, hiện tại cả hai tệp đều có tham chiếu đến cordova.js, jquery mobile và jquery bình thường, nhưng vẫn không có may mắn – Michel

Các vấn đề liên quan