如何在调试时获取自定义类变量以显示onString()值?

时间:2012-03-22 19:35:04

标签: android debugging

当我调试时,在断点处停止并“悬停”在源代码中的范围内变量上,弹出窗口显示变量类成员和变量字符串表示。如果我打开了变量窗口并单击范围内变量,则窗口将显示相同的变量类成员和变量字符串表示。

  1. 我有Bundle,String,TextView和SplitValueRow类的局部变量[自定义类]

  2. 当我将鼠标悬停在变量包上时,显示的字符串表示形式是Bundle类重写的继承的toString()方法返回的字符串。

  3. 当我将鼠标悬停在变量字符串上时,显示的字符串表示形式是String类覆盖继承的toString()方法返回的字符串。
  4. 当我将鼠标悬停在变量textView上时,显示的字符串表示形式是继承的类[Object] toString()方法返回的字符串。此类 会覆盖继承的toString()方法。
  5. 当我将鼠标悬停在变量splitClassRow上时,显示的字符串表示形式是继承的类[Object] toString()方法返回的字符串。此类 DOES 会覆盖继承的toString()方法。
  6. 我的精简自定义类重写了toString()方法:

      @Override
      public synchronized String toString() {
        String s = new String();
        s.concat(twValueRight.getText().toString());        
        return s;
      }
    

    问题:在悬停和变量窗口中,为什么我的自定义类重写toString()方法的工作方式与Bundle和String重写toString()方法的工作方式相同?

1 个答案:

答案 0 :(得分:0)

如果这是您正在使用的实际代码,则会遇到串联问题。字符串连接不像Java那样工作。你正在返回一个空字符串。

使用:

@Override
public synchronized String toString() {
  return twValueRight.getText().toString();        
}

或者:

@Override
public synchronized String toString() {
  String s = new String();      
  s = s.concat(twValueRight.getText().toString());       
  return s; 
}