Android - 如何在TextView中打印结果?

时间:2015-12-20 09:28:02

标签: java android textview

我应该使用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"));

}

}

4 个答案:

答案 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
}
}