我一直在尝试让一个应用程序工作,它允许我从 URL 读取,然后将我从 URL 获得的文本用于应用程序中的其他目的。
我遇到的问题是文本没有被“保存”。
我知道我的#getText 方法有效,因为我在 IntelliJ 中运行了一个基本的命令行应用程序:
String textFromUrl;
public static void main(String[] args) {
textFromUrl = Vars.getEngUrlText();
System.out.println(textFromUrl);
}
结果是它打印了它应该打印的确切文本。这是在我的 Android 项目的主要活动类中编写的,我只是将主要方法作为普通的 Java 应用程序运行,而不是从我的 USB 设备运行实际的 apk。
现在,我尝试通过 In Vars 类在 Android 设备中做同样的事情:
String textFromUrl;
在第一个活动的#onCreate 中:
Vars.textFromUrl = Vars.getEngUrlText();
TextView tx = (TextView) findViewById(R.id.titletext);
tx.setText(Vars.textFromUrl);
它只是显示空白,没有文字,什么都没有。其余的布局很好,其他一切都显示并且没有错误。我假设 textFromUrl 的值为空,我不知道为什么。
是的,我确实拥有在我的 AndroidManifest 中访问网络的适当权限,因为我使用的是 WebView 并且它工作正常。我什至尝试过运行线程,让它在更改文本之前等待一段时间(大约 5 秒),但它仍然无法工作。
这是怎么回事?
getText 和 #getEngUrlText 下面。
getEngUrlText 调用 getText:
public static String getText(String url) throws Exception {
URL website = new URL(url);
URLConnection connection = website.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
StringBuilder response = new StringBuilder();
String inputLine;
while ((inputLine = in.readLine()) != null)
response.append(inputLine);
in.close();
return response.toString();
}
public static String getEngUrlText() {
try {
textFromUrl = getText("url that is supposed to be here removed");
} catch (Exception e) {
e.printStackTrace();
}
return textFromUrl;
}