2016-04-23 91 views
3

我想查看一個對象,類似於PHP中的print_r(an_object),或者JavaScript(瀏覽器中)中的console.log(an_object),但是用於Android。將對象輸出到Logcat控制檯

我嘗試這樣

public void a_method(SomeClass the_arg) 
{ 
    Log.d("an_id" , the_arg); 
} 

這將生成的錯誤消息:

Error:(23, 10) error: no suitable method found for d(String,View) method Log.d(String,String,Throwable) is not applicable (actual and formal argument lists differ in length) method Log.d(String,String) is not applicable (actual argument View cannot be converted to String by method invocation conversion)

回答

11
View對象

您無法像使用JavaScript一樣在Java中將對象打印到控制檯。

您有三種解決方案。

1)使用調試器。在android studio中放置一個斷點並進行調試。然後你可以在範圍內檢查完整的對象。

2)序列化您的對象(例如JSON)並將結果打印到控制檯。你的對象的

3)覆蓋toString方法給你你想要的所有信息,並致電Log.d("myTag", yourObj.toString())

我極力推薦第一種方法。我曾經避免使用調試器,但學習如何使用調試器是我做過的最好的事情。它提高了你的效率並且使得調試變得非常容易

+2

我把這個標記爲答案,因爲它告訴我我的JavaScript思想必須改變('你不能像在javascript中一樣將對象打印到Java控制檯中)它提供了幾個選項 – dsdsdsdsd

+1

對於選項3,請注意NullPointerException –

+0

非常好的一點@ cricket_007如果您希望'yourObj'在任何時候都爲空。如果'yourObj'永遠不能爲空,我傾向於不檢查並且讓應用程序崩潰。然後,我可以追蹤obj背後的原因爲空。 – Arijoon

6

第二個參數必須是字符串。

Log.d("an_id", String.valueOf(the_arg)); 

你的錯誤說你不能登錄一個View

​​

,當你在控制檯中看到了些廢話當你打印,請不要驚訝,通過使用String.valueOf