2012-08-15 87 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