-3

如何将 catch 块值传递给另一个 Activity?我的 Activity 在访问 URL 并在服务器忙或没有响应时获得 XML 响应时工作正常,如何将 catch 块语句传递给另一个 Activity?

       public class AgAppHelperMethods
       {
         private static final String LOG_TAG = null;
         public static String varMobileNo;
         public static String varPinNo;
         String[][] xmlRespone = null;
         public static String[][] AgAppXMLParser( String parUrl)
         {
    String _node,_element;
            String[][] xmlRespone = null;
            HttpURLConnection urlConnection = null;
            try
               {        
                String url = parUrl;
                URL finalUrl = new URL(url);    
            urlConnection = (HttpURLConnection) finalUrl.openConnection();
                urlConnection.connect();
            DocumentBuilderFactory dbf =  
    DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new  
                    InputSource(urlConnection.getInputStream()));
        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

            urlConnection.disconnect();

        }//end try

    catch (Exception e)
    {
        Log.e(LOG_TAG, "CONNECTION ERROR O SERVER NOT RESPONDING", e);
    } 
    return xmlRespone;         

}
4

3 回答 3

2

正如您所说,您不想调用任何意图,并且您不会将此异常传递给任何特定类,因此无法使用 Activity ...

那么这个怎么样?

Public Class Messages{

static String message = "";

public static void setMessage(String msg){
        message= msg;

    }
public static String getMessage(){
   return message;

}



}

......在这里你设置它

    catch(Exception e)

{
  Messages.setmessage("CONNECTION ERROR O SERVER NOT RESPONDING");
}

你可以在任何地方得到它,比如,

字符串消息 = Messages.getMessage();

它返回最新更新的消息或空字符串..如果您想保留所有消息,那么您可以使用数组..它对您有用吗?

于 2012-10-09T07:01:47.043 回答
1

如果您需要传递给其他活动,您绝对应该使用 Intent。

一个简单的解决方案是通过帮助类的构造函数传递调用活动的上下文。并从那里利用上下文对象来启动一个新的活动。

像这样的东西,

catch(Exception e)

{
   Intent i=new Intent(contextObj,ActitvityName.class);
    contextObj.startActivity(i);

}

如果您需要传递异常,请像这样使用 Intent 的 putExtra,

 i.putExtra("exception",e.getClass().getSimpleName());

并在被调用的 Activity 中使用 bundle 对象获取值。

于 2012-10-09T06:49:57.887 回答
0

如果您想在调用该方法的其他类中接收异常,则可以按照以下方式进行。

  1. 删除你想在另一个类中接收的 catch 块
  2. 通过在方法末尾添加throws Exception/IoException从方法中抛出异常
  3. 现在从方法的调用类中放置 try 和 catch 块并在那里处理异常。

    编辑

如果您想将异常传递给除方法类调用之外的任何其他类,您可以为异常创建一个类并使用 getter 和 setter 方法,您可以从任何地方设置和获取异常,只需要传递该类对象到接收异常类。

于 2012-10-09T07:16:37.563 回答