2016-06-26 140 views
0

我正在使用this tutorial製作Android登錄應用程序。我已經遵循了他的所有步驟,並且能夠成功地將該應用程序加載到模擬器或手機上,但是當我嘗試創建帳戶時,出現錯誤 - 我按照他提供的說明指出如何測試系統,並引用到此處:Android登錄未與數據庫連接

  • 測試應用
  • 對於一個初學者這將是很困難的運行此項目首次。但不用擔心,以下步驟將幫助您測試此應用程序。 (IP地址看起來像192.168.0.100)

    確保兩個設備(運行PHP項目和Android設備的設備)在同一個WiFi網絡上。

    給正確的用戶名,密碼和數據庫名稱的MySQL在config.php

    與你的機器的IP地址替換URL_LOGIN和URL_REGISTER在AppConfig.java的URL地址。您可以通過在CMD運行IPCONFIG獲取IP地址

    我的IPv4地址是192.168.0.11, 所以我補充說,到了AppConfig文件,如下所示:

    package android.loginfirstattempt.com.loginfirstattempt.app; 
    
    
    public class AppConfig { 
        // Server user login url 
        public static String URL_LOGIN = "http://192.168.0.11/android_login_api/login.php"; 
    
    
        // Server user register url 
        public static String URL_REGISTER = "http://192.168.0.11/android_login_api/register.php"; 
    
    } 
    

    我使用的Android Studio內置在模擬器中,這兩個設備都在同一個網絡上。

    我使用LAMPP和我的假設下是默認情況下爲用戶名和密碼:

    <?php 
    define("DB_HOST", "localhost"); 
    define("DB_USER", "root"); 
    define("DB_PASSWORD", ""); 
    define("DB_DATABASE", "android_api"); 
    ?> 
    

    我開始在本地服務器和測試,以確保它們被裝了一個演示頁面運行。

    我已經創建了MySQL數據庫和表格,如他的示例中所示。

    我對服務器端的文件結構this picture

    顯示但當我嘗試創建一個用戶我得到這個崩潰:

                          beginning of crash 
    

    06-26 19:12:13.205 2668- 2668/android.loginfirstattempt.com.loginfirstattempt E/AndroidRuntime:致命異常:主要 進程:android.loginfirstattempt.com.loginfirstattempt,PID:2668 java.lang.NullPointerException:嘗試調用虛擬我thod'void android.loginfirstattempt.com.loginfirstattempt.app.AppController.addToRequestQueue(com.android.volley.Request,java.lang.String)'null對象引用 at android.loginfirstattempt.com.loginfirstattempt.activity.RegisterActivity .registerUser(RegisterActivity.java:189) at android.loginfirstattempt.com.loginfirstattempt.activity.RegisterActivity.access $ 300(RegisterActivity.java:35) at android.loginfirstattempt.com.loginfirstattempt.activity.RegisterActivity $ 1.onClick(RegisterActivity .java:84) at android.view.View.performClick(View.java:5198) at android.view.View $ PerformClick。運行(View.java:21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop( Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .RUN(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

    我無法找到任何明顯的錯誤,並想知道如果有人可以幫助!

    +0

    這裏是phpMyAdmin的頁面爲DB和表http://i.stack.imgur.com/KJUgQ.png – gazzler

    +0

    這裏是一個圖像項目,如果你想看看https://drive.google.com/file/d/0B4vL9wnJulKoVUt6bmNPNjJXUUk/view?usp=sharing – gazzler

    +0

    我在我的評論下面添加了一個鏈接,這可能是你的最後一個錯誤的解決方案。 – Rockney

    回答

    0

    您沒有將AppController添加到AndroidManifest.xml中的應用程序標記中,如本教程中所述。您的AppController現在在應用程序初始化期間不會被調用,並且未初始化。當您在registerUser方法內呼叫AppController.getInstance().addToRequestQueue(strReq, tag_string_req);時,方法AppController.getInstance()返回空值。這會導致您的nullpointerException。將AppController添加到清單並且您的代碼應該正常工作。

    您的應用程序代碼應該是這樣的:

    <application 
        android:name="com.loginfirstattempt.app.AppController" 
        android:allowBackup="true" 
        android:icon="@drawable/ic_launcher" 
        android:label="@string/app_name" 
        android:theme="@style/AppTheme" > 
    
    +0

    嗨,謝謝修復它 - 但是,當我嘗試註冊現在我得到這個錯誤http://pastebin.com/9zZnvQ4F – gazzler

    +0

    我在互聯網上添加權限,但仍然得到一個錯誤http://pastebin.com/Y4qqUXzY .. 。我不明白爲什麼它不能被發現 - 它在正確的目錄中,你可以從問題 – gazzler

    +0

    的屏幕截圖中看到。你可以用多種方式引用你的主機。你可以嘗試使用127.0.0.1或本地主機而不是192.168.0.11 – Rockney