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