2012-08-15 90 views
4

嗨,這是我的助手類,其中我檢查內部連接和xml paersing和使用此類到另一個活動問題是當服務器連接工作正常,但當服務器沒有響應或無效輸入代碼意外爆炸停止我找到asyntask來解決這個問題,但我的問題是我怎麼能在這個代碼中使用AsyncTask?或如何顯示吐司消息,如果服務器沒有響應錯誤消息連接錯誤aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa在日誌中顯示,但不顯示在吐司上我該怎麼做,所以我的應用程序不爆炸時服務器沒有響應?任何想法?如何顯示吐司消息不擴展活動類

public class AgAppHelperMethods { 

    private static final String LOG_TAG = null; 

    private static AgAppHelperMethods instance = null; 

    public static String varMobileNo; 
    public static String varPinNo; 
    String[][] xmlRespone = null; 

    public static String getUrl() { 
     String url = "https://demo.accessgroup.mobi/"; 
     return url; 
    } 

    public static String[][] AgAppXMLParser(String parUrl) { 
     String _node, _element; 
     String[][] xmlRespone = null; 
     try { 
      String url = AgAppHelperMethods.getUrl() + parUrl; 
      URL finalUrl = new URL(url); 
      DocumentBuilderFactory dbf = 
       DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(new InputSource(finalUrl.openStream())); 
      doc.getDocumentElement().normalize(); 

      NodeList list = doc.getElementsByTagName("*"); 
      _node = new String(); 
      _element = new String(); 
      xmlRespone = new String[list.getLength()][2]; 

      for (int i = 0; i < list.getLength(); i++) { 
       Node value = list.item(i).getChildNodes().item(0); 
       _node = list.item(i).getNodeName(); 
       _element = value.getNodeValue(); 
       xmlRespone[i][0] = _node; 
       xmlRespone[i][1] = _element; 
      } //end for 
     } //end try 
     catch (Exception e) { 
      // Toast.makeText(context, "error server not responding " + 
      e.getMessage(), Toast.LENGTH_LONG).show(); 
     Log.e(LOG_TAG, "Connection Error aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 
      e); 
     // Do something else, if wanted. 
    } 
    return xmlRespone; 
} 
+0

看到評論等後,我認爲你應該開始更簡單。這比你高。閱讀一些關於編程的基礎知識。 – 2012-08-15 09:34:52

回答

1

你需要將你的applicationContext作爲目標,我看不到你在做什麼? 你已經評論了Toast消息的第一行嗎?

編輯: 也真的很糟糕的codestyle來捕捉異常e。你應該嘗試縮小你想要捕捉哪種異常。

+0

我想捕捉異常服務器沒有響應eror或無效的用戶id pasword異常 – 2012-08-15 06:41:06

6

創建像一個全局變量:

Context mContext; 

然後構造函數添加到您的類,在其中您接受Context參數,並將其分配給mContext,如:

public AgAppHelperMethods(Context context) { 
     mContext = context; 
} 

在創建一個對象您的活動如:

AgAppHelperMethods helper = new AgAppHelperMethods(getBaseContext()); 

最後,要顯示您的吐司用途:

Toast.makeText(mContext, "error server not responding " + e.getMessage(), Toast.LENGTH_LONG).show(); 
+0

它嘗試它這個消息來做什麼時候說 方法getBaseContext()是未定義的類型AgAppHelperMethods – 2012-08-15 06:44:42

+0

如果你不介意RaghavSood你給我你的電子郵件地址或Skype ID – 2012-08-15 06:45:10

+0

@LastSumorai該部分需要在您的活動。 – 2012-08-15 06:46:06

1

在應用程序類創建myToast方法,像

public void myToast(String msg) { 
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); 
} 

和下面的代碼添加到您的類,

private MyApplication application; 
public AgAppHelperMethods(Context context) { 
    application = (MyApplication)context.getApplication(); 
} 

最後,調用myToast方法,你想,像

applicaion.myToast("msg you want to show"); 

注意:將MyApplication替換爲您的應用程序類

我還沒有測試過,但這可能適用於您。

+0

sir fi u不介意我可以通過郵件發送完整的代碼嗎?所以你可以運行並輕鬆地解決問題? – 2012-08-15 08:04:56

+0

應用類是什麼意思?你的意思是一個活動clas或agapphelpermethod類? – 2012-08-15 08:06:46

+0

通過擴展「應用程序」創建一個類,它被稱爲應用程序類 – Babloo 2012-08-15 13:07:56