在我的 Android 项目中,我有一个简单的 Java 文件,它获取网页内容、对文本执行某些操作并将文本作为 String
返回。我在 Android 上的另一个 Activity 的 ScrollView
中显示此文本。
它工作正常,但当我尝试操作这个 Java 文件中的文本时,问题就出现了。我尝试使用数组,它不起作用,然后切换回 String
,仍然没有任何结果。这只是一种特殊的方法,无法提供任何输出,但程序可以正常编译。
但是,在 Eclipse 的 Java 项目中尝试相同的方法时效果非常好。
这是我的代码:
// This method will return selected stripped text extracted from rawData
public static String FillMenus(String rawData){
String resulT = "";
int c1, c2;
for(int i=0; i<11; i++){
c1 = rawData.indexOf("\" width=\"50px\" />") + 17;
c2 = rawData.indexOf(" €</td>") + 2;
if (c1==16 || c2==1) break;
if (c1<=c2){
resulT = resulT+"\n"+ rawData.substring(c1, c2);
rawData = rawData.substring(c2);
}
if (c1>c2){
resulT = resulT+"\n"+StripTag((rawData.substring(0, c2)));
rawData = rawData.substring(c2);
}
}
return resulT;
}
如果这个方法没有问题,那为什么它没有提供任何输出呢?如果我在 Android 中返回 rawData
,手机会正确显示所有内容。如果我返回输出结果String
,则手机中全是空白。
如果我在同一个 Android 项目中的另一个测试类 (test.java) 中调用此方法(例如在类 ABC
中创建),则使用 String a = ABC.FillMenus(String b) )
有一些奇怪的事情。我收到编译器错误,但在 Android 手机中显示为空白。从 Java 项目中调用的同样的东西绝对可以正常工作。
我有什么遗漏吗?
最佳答案
一些事情
1) for 循环是为了什么?
2) if (c1<=c2) 和 if (c1>c2) 是互斥的,因此我建议将 if (c1>c2) 更改为 else(将来当您想要更改代码时会有所帮助)
3)您应该将结果初始化为null,而不是“”,这将帮助您在FillMenu退出时进行测试,以了解您的代码何时被跳过或何时没有值。
现在我的猜测是,由于某种原因 if (c1==16 || c2==1) break;被触发,因此 resultT 永远不会改变,因此存在为空。
您应该在调试中运行此代码并在其中放置一个断点,特别监视 c1 c2 的值
我认为没有足够的信息来帮助您的部分表格
杰森
关于java - Android 的奇怪问题,程序可以编译但无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190411/