我应该使用setText()但是我应该如何使用它而不是System.out.println()? 我想在TextView中打印结果。代码是一个json阅读器。对不起,我需要写一些文字让我发帖提问。
public class JsonReader extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
is.close();
}
}
public static void main(String[] args) throws IOException, JSONException {
JSONObject json = readJsonFromUrl("http://www.w3schools.com/json/myTutorials.txt");
System.out.println(json.toString());
System.out.println(json.get("display"));
//TextView tv = (TextView) findViewById( R.id.tv );
//tv.setText(json.toString());
//tv.setText(json.get("display"));
}
}
答案 0 :(得分:2)
如果要按照johnrao07的建议在手机而不是LogCat控制台上查看结果,则需要在TextView中打印结果。
要在TextView中打印结果,首先在activity_main.xml布局文件中添加TextView小部件。
<TextView
android:id="@+id/text_view_id"
android:layout_width="match_parent"
android:layout_height="match_parent" />
然后JsonReader.java类主函数而不是System.out.println(json.toString());
调用((TextView) findViewById(R.id.text_view_id)).setText(json.toString());
答案 1 :(得分:1)
您需要使用日志来打印和调试Android中的内容。
通常有五种方法,
Log.v() Log.d() Log.i() Log.w() and Log.e()
v for Verbose
d for Debug
i for Info
w for Warnings
e表示错误
在你的情况下
Log.d("Key", json.toString() + "");
Log.d("Key", json.get("display") + "");
然后使用“密钥”
在log cat中查找值答案 2 :(得分:0)
您可以使用CharArrayWriter
收集输出:
rs.add("myhostname:27027")
您必须使用CharArrayWriter writer = new CharArrayWriter();
// write your stuff
TextView view = ...
view.setText(writer.toString());
可用的方法而不是Writer
的方法,例如PrintStream
(无System.out
方法)。
如果要使用基本相同的调用来生成输出,可以创建println()
并将其包装在ByteArrayOutputStream
中。写入(并关闭PrintStream
)后,从PrintStream
检索字节数组,并使用ByteArrayOutputStream
构造函数之一将其转换为String
。您只需在创建String
和将字节转换为PrintStream
时指定要使用的字符编码。
另一种替代方法是通过简单地将数据附加到String
来替换打印。
最后一种选择只是直接附加到StringBuilder
,但这需要将每个输出转换为某种TextView
。
答案 3 :(得分:0)
public class JsonReader extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable(){
public void run(){
JSONObject json = readJsonFromUrl("http://www.w3schools.com/json/myTutorials.txt");
System.out.println(json.toString());
System.out.println(json.get("display"));
runOnUiThread(new Runnable(){
public void run(){
TextView tv = (TextView) findViewById( R.id.tv );
tv.setText(json.toString());
tv.setText(json.get("display"));
}
});
}
}).start();
}
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
is.close();
}
}
public static void main(String[] args) throws IOException, JSONException {
//move to onCreate
}
}