android - Uri.toString() 返回一个引用而不是字符串

标签 android string reference uri

当尝试在 Android Activity 中执行此代码时:

Uri testurl = Uri.parse("http://www.google.com");
Log.v("HTTPGet", "testurl.toString == " + testurl.toString());

Logcat 中唯一的输出是对字符串的引用,而不是字符串本身:

HTTPGet(23045): testurl.toString == [Landroid.net.Uri;@4056e398

如何打印实际的字符串?

最佳答案

原始答案(从头开始)

Uri.toString 从类 Uri 中写出 URI 对象的描述。

文档在这里:http://developer.android.com/reference/android/net/Uri.html

要获得人类可读的版本,请调用为该类定义的 getter 方法。

真正的答案

OP 已经澄清并提供了实际代码。这是实际的上下文:

@Override
protected Document doInBackground(Uri... arg0) {
    Document ret = null;
    Log.v("HTTPGet", "Uri.toString == " + arg0.toString());
    try {
        ret = Jsoup.connect(arg0.toString()).get();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return ret;
}

这里发生的是参数 arg0 的类型为 Uri[],即 Uri 数组。点对点语法是 Java 的“varargs”。这意味着参数实际上是一个数组,但不是在调用中传递数组,而是可以传递任意数量的参数,Java 会将这些参数打包到一个数组中。

因为您使用的是第三方库,所以您必须重写此方法,该方法接受一个或多个 Uris。您假设只会使用一个。如果是这种情况,您应该改写

Log.v("HTTPGet", "Uri.toString == " + arg0[0].toString());

如果您真的要处理多个 URI,请使用 for 循环遍历并记录所有这些。

确保也修复您的 Jsoup.connect 行。它不想要杂乱的数组字符串。 :)

关于android - Uri.toString() 返回一个引用而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7022306/

相关文章:

java - 将 Double 舍入到小数点后 1 位 kotlin : from 0. 044999 到 0.1

java - 如何修改Intent中类的名称(变量而不是硬编码)?

search - Wolfram Alpha 在编程中的用途

c# - 想知道一种在 C# 中使用 List<> 和结构来节省内存的方法

java - 检查 nfc 标签是否在附近

具有模拟位置提供程序的 Android 地理围栏

Android NDK/JNI UnsatisfiedLinkError With .So library

c++ - 如何将字符串(包含双最大值)转换为 double

java - 使用 String.format 的小数点后位数

c++ - 将 Eigen 对象作为参数传递时的指针与引用差异