gpt4 book ai didi

java - 从 URL 读取文本文件并输出到 TextView

转载 作者:行者123 更新时间:2023-12-02 02:51:34 25 4
gpt4 key购买 nike

我在这里询问是因为所有其他解决方案都不起作用。我想从网络读取文本文件并将该字符串放入 TextView 中。我目前正在测试,文本文件中唯一的内容是值“223”。我的应用程序在启动时崩溃,有人可以帮忙吗?

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.StringBuilderPrinter;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

private TextView textView;
private StringBuilder text = new StringBuilder();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BufferedReader reader = null;

try {

URL url = new URL("http://something.uk/pmt/status.txt");


reader = new BufferedReader(
new InputStreamReader(url.openStream()));


String str;


while ((str = reader.readLine()) != null) {
text.append(str);
text.append('\n');
}

} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Error reading file.", Toast.LENGTH_LONG).show();
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (MalformedURLException e) {

}

catch (IOException e) {

}
}

TextView output = (TextView) findViewById(R.id.textView);
output.setText((CharSequence) text);
}
}
}

堆栈跟踪:

https://pastebin.com/YSCB9RBg

最佳答案

可能是因为您使用的 StringBuilder 不是 CharSequence。使用 output.setText(text.toString()); 而不是 output.setText((CharSequence) text);

TextView.setText()需要 CharSequence 作为参数。 StringCharSequence,但 StringBuilder 不是。要获取 String,您需要调用 StringBuilder.toString()

不过你应该看看崩溃情况。下次您在 stackoverflow 上提问时发布它。

您提供的崩溃日志清楚地说明了崩溃的原因:android.os.NetworkOnMainThreadException。这意味着您正在尝试在主线程上执行网络操作,而 Android 操作系统不允许您这样做。这是自 hive 以来的规则。例如,解决方案是使用 AsyncTask。这是an article about network ops and AsyncTask .

关于java - 从 URL 读取文本文件并输出到 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43768311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com