将对象输出到Logcat控制台

dsd*_*dsd 5 logging android

我想看一个对象,类似于print_r(an_object)PHP 中的对象,或者console.log(an_object)在javascript(在浏览器中),但对于Android.

我试过这个

public void a_method( SomeClass the_arg )
{ 
    Log.d( "an_id" , the_arg );
}
Run Code Online (Sandbox Code Playgroud)

这会生成错误消息:

错误:(23,10)错误:没有为d(String,View)方法找到合适的方法Log.d(String,String,Throwable)不适用(实际和形式参数列表长度不同)方法Log.d(String ,String)不适用(实际参数View不能通过方法调用转换转换为String)

Ari*_*oon 14

您无法像在javascript中那样在Java中将对象打印到控制台.

你有三个解决方案.

1)使用调试器.在android studio中放置断点并调试.然后,您可以检查范围中的完整对象.

2)序列化您的对象(例如,JSON)并将结果打印到控制台.

3)覆盖toString对象的方法,为您提供所需的所有信息并进行调用Log.d("myTag", yourObj.toString())

我强烈推荐第一种方法.我曾经避免调试器,但学习如何使用调试器是我做的最好的事情.它可以提高您的效率并使调试非常容易

  • 我将此标记为答案,因为它告诉我,我的javascript思维必须改变("你不能像在javascript中那样在Java中将对象打印到控制台.")它给出了几个选项 (2认同)
  • 这就是为什么我对我不确定的值使用`String.valueOf`的原因.返回null作为String而不是崩溃 (2认同)

Adi*_*til 10

将对象转换为 JSON。你可以使用Gson。

val gson = Gson()
val json = gson.toJson(yourObject)
Log.e(TAG, json)
Run Code Online (Sandbox Code Playgroud)

或者

Log.e(TAG, Gson().toJson(yourObject))
Run Code Online (Sandbox Code Playgroud)


cri*_*007 6

第二个参数必须是String.

Log.d("an_id", String.valueOf(the_arg));
Run Code Online (Sandbox Code Playgroud)

您的错误表明您无法登录View课程

没有为d找到合适的方法(String,View)

当您View通过使用打印该对象时在控制台中看到一些废话时不要感到惊讶String.valueOf