我不确定我还能做些什么。这是一个拒绝打印堆栈跟踪的函数。我不确定是不是因为Eclipse没有将正确的.apk部署到模拟器中,或者它是我正在做的事情。所以:
private String getStringFromResponse(HttpResponse response) {
try {
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null){
str.append(line);
}
in.close();
String responseXMLString = str.toString();
return responseXMLString;
}
catch(Exception ex) {
ex.printStackTrace();
String stackTrace = ex.getStackTrace().toString();
Log.i("PPKMCC-NtwrkAccessClass", stackTrace);
return null;
}
}
str.toString()
有例外。我不知道原因,因为我无法查看堆栈跟踪。我不认为这是因为响应的大小,因为相同的代码直到现在才下载prefs。
在catch
块中,printStackTrace()
不会输出到Logcat。我在String stacktrace
处有一个断点,但它没有达到该特定断点,而是直接转到return null
。我已经尝试重置模拟器,创建一个全新的模拟器实例,清理我的项目,它们似乎都没有工作。
非常感谢任何帮助!
谢谢,
的Teja。
答案 0 :(得分:2)
关于StackTrace,
你不能像Java一样直接打印Stacktrace,你必须做一些体操。 你可以试试这个:
Log.e("jason", "Login exception triggered : "+ e.getMessage() +"\n"+e);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream stream = new PrintStream( baos );
e.printStackTrace(stream);
stream.flush();
Log.e("jason", new String( baos.toByteArray() ) );
关于断点:
我建议:
1)检查函数是否被调用
2)检查您是否在调试中启动
3)检查您的清单是否允许调试
关于str.toString(),我认为它只能在空对象上调用时崩溃。 我建议添加一个
`if(str != null)
{
//toString
}else{
Log.e(TAG,"str == null");
}
`
希望有所帮助
杰森