[英]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.制作此方法,以檢查連接是否可用
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.