簡體   English   中英

我的Android應用需要通過點擊按鈕來驗證與互聯網的連接,但是應用使用我的代碼時卻崩潰了

[英]My Android app needs to verify connection to internet onClick of a button but app is crashing on using my code

我需要在按我的應用程序中的注銷按鈕時驗證互聯網連接,如果不存在連接,則它必須顯示一條吐司消息“連接錯誤”,並且不能轉到登錄頁面。

以下是運行模擬器時在控制台窗口中收到的錯誤代碼。

Android運行時錯誤:致命異常:線程-85

java.lang.RuntimeException:無法在線程內創建處理程序。

我創建了一個名為“ appstatus.java”的類,並使用了它,並且可以在登錄頁面上正常工作,但是當我嘗試使用存在“退出”按鈕的“ mainactivity.java”條件時,我嘗試使用相同的類。 它無法正常工作,應用崩潰。 下面是我的代碼:

@Override public void onClick(View v){

new Thread(new Runnable() {

    @Override
    public void run() {
        // TODO Auto-generated method stub

        if (AppStatus.getInstance(getBaseContext()).isOnline(getBaseContext())) {
            //




        Log.v("driver-id from logout:",""+drv_id);  


        HttpClient httpclient = new DefaultHttpClient();

        HttpPost httppost = new HttpPost(ServerConnection.ip+"LogoutFlag.jsp");
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        Log.v("drv id from logout:",""+drv_id);
        nameValuePairs.add(new BasicNameValuePair("driver_id", ""+drv_id));



    try {


        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        String response = httpclient.execute(httppost, responseHandler);
        String reverseString = response.trim();
        Log.v("Response device id from logout",reverseString);




    }
     catch (Exception e) {


        Log.e("logout error:",e.toString());

     }
            }
        else {
         Toast.makeText(getBaseContext(), "Connection Lost", Toast.LENGTH_SHORT).show();
        }
    }
}).start();

我曾經使用過相同的if,else條件來檢查登錄頁面上的互聯網連接,並且工作正常。 在這里,我注意到的唯一區別是使用了try catch方法。

我的問題是:

  1. 為什么應用程序崩潰並顯示上述代碼?

  2. 如何重寫代碼以避免上述原因的錯誤?

任何代碼都將受到高度贊賞,並在此先感謝。

嘗試這種方式,希望這將幫助您解決問題

遵循幾個步驟來檢查互聯網連接,並使代碼不崩潰

步驟1.制作此方法,以檢查連接是否可用

  void isConnectedToInternet() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    if (ni != null)
        greenFlag();
    else
        new AlertDialog.Builder(activity)
                .setTitle("Network connection error !")
                .setMessage("Please check internet settings to continue.")
                .setNegativeButton("Continue",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                isConnectedToInternet();
                            }
                        }).show();

}

步驟2.在oncreate上運行此方法,

         isConnectedToInternet();

第3步。在此方法中,您需要放入與Web服務和其他任務相關的所有數據,

      void greenFlag() {

    // Anything you want to do here 
        }

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM