如何在不扩展活动类中显示toast消息

时间:2012-08-15 06:28:15

标签: android

这是我的助手类,我检查内部连接和xml对话并将此类用于另一个活动问题是当服务器连接工作正常但是当服务器没有响应或无效的输入代码是意外爆炸时我发现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;
 }

3 个答案:

答案 0 :(得分:6)

创建一个全局变量,如:

Context mContext;

然后在您的类中添加一个构造函数,您可以在其中接受Context参数并将其分配给mContext,如:

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

在您的Activity中创建一个对象,如:

AgAppHelperMethods helper = new AgAppHelperMethods(getBaseContext());

最后,要显示你的Toast使用:

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

答案 1 :(得分:1)

你需要在toast中定位你的applicationContext,我看不到你在任何地方这样做? 你已经超过了吐司信息​​的第一行吗?

编辑: 捕获异常e的代码风格也非常糟糕。您应该尝试缩小您想要捕获的异常类型。

答案 2 :(得分: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替换为您的应用程序类

我没有测试过,但这可能对你有用。