【问题标题】:Text not being saved to String variable文本未保存到字符串变量
【发布时间】:2013-03-03 16:12:19
【问题描述】:

我一直在尝试让一个应用程序运行,它允许我从 URL 读取,然后将我从 URL 获取的文本用于应用程序中的其他目的。

我遇到的问题是文本没有被“保存”。

我知道我的 #getText 方法有效,因为我在 IntelliJ 中运行了一个基本的命令行应用程序:

String textFromUrl;

public static void main(String[] args) {
textFromUrl = Vars.getEngUrlText();
System.out.println(textFromUrl);
}

结果是它打印了它应该打印的确切文本。这是在我的 Android 项目的主要活动类中编写的,我只是将主要方法作为普通 Java 应用程序运行,而不是从我的 USB 设备运行实际的 apk。

现在,我尝试在 Android 设备上做同样的事情 在 Vars 类中:

String textFromUrl;

在第一个活动的#onCreate 中:

Vars.textFromUrl = Vars.getEngUrlText();

TextView tx = (TextView) findViewById(R.id.titletext);
tx.setText(Vars.textFromUrl);

它只是显示空白,没有文字,什么都没有。其余的布局很好,其他一切都显示并且没有错误。我假设 textFromUrl 的值为 null,我不知道为什么。

是的,我确实拥有在我的 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;
    }

【问题讨论】:

  • 当你可以做tx.setText(Vars.getEngUrlText())Vars.textFromUrl = Vars.getEngUrlText();有什么意义
  • 发布您的getEngUrlText() 方法。我的直觉是它是异步的,所以你最终会在 textFromUrl 设置值之前调用 setText
  • 嗯,没什么意义,但我想我以后可以用它来缓存。无论如何,它没有任何区别。但是我再次通过在 Vars 类中粘贴一个 main 方法并使用 getEngUrlText 方法对其进行了测试,它正常打印了文本。
  • 在 OP 的 getEngUrlText() 方法中编辑。
  • 通过定位较低的 SDK 解决了这个问题。显然我没有看到 logcat 显示的 NetworkOnMainThreadException,因为我只是在寻找错误而不是所有的警告等。

标签: java android string http url


【解决方案1】:

通过定位较低的 SDK 解决了这个问题。显然我没有看到 logcat 显示的 NetworkOnMainThreadException,因为我只是在寻找错误,而不是所有警告等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 2014-07-17
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多