调试提示
在继续创建应用的其他功能之前,我想介绍一条快速调试提示(如果你尚未 听说过的话)
你可以使用日志语句来了解任何 Java 对象的状态。最简单的方式是实现 toString() 方法, 并输出 Java 对象的内容。该方法旨在将整个对象当做字符串,通常用于调试目的。
Word 类示例
我来演示下 Word 对象示例。在 Word 类中,重写 toString 方法。
- 将光标放在文件的空白处(即在现有方法之外,但依然位于该类中)。
查看示例:
2) 然后使用键盘快捷键自动“生成一个方法”(Getter、Setter、 构造函数、toString 等等)”。在 Windows 上,键盘快捷键是 ALT + Insert。在 Mac 上,键盘快捷键是 CMD + N。
-
你应该会看到下面这个弹出对话框。选择 toString()。
-
点击“确定”接受默认的选项。
-
Android Studio 将自动生成这个 toString() 方法并将其添加到你的 Word 类中。 此方法连结了各种变量和文本,以便将 Word 类中的所有变量都输出为字符串。你可以看到, 该方法的返回值是一个字符串。
/**
* Returns the string representation of the {@link Word} object.
*/
@Override
public String toString() {
return "Word{" +
"mDefaultTranslation='" + mDefaultTranslation + '\'' +
", mMiwokTranslation='" + mMiwokTranslation + '\'' +
", mAudioResourceId=" + mAudioResourceId +
", mImageResourceId=" + mImageResourceId +
'}';
}
- 一旦你具有了 Word 对象,例如位于 OnItemClickListener 的 onItemClick() 方法中,就可以向日志中输出 Word 对象了。
// Set a click listener to play the audio when the list item is clicked on
listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
// Get the {@link Word} object at the given position the user clicked on
Word word = words.get(position);
Log.v("NumbersActivity", "Current word: " + word);
// Create and setup the {@link MediaPlayer} for the audio resource associated with the current word
mMediaPlayer = MediaPlayer.create(PhrasesActivity.this, word.getAudioResourceId());
// Start the audio file
mMediaPlayer.start();
}
}
);
注意: 如果你(使用“+”运算符)将字符串与 Word 对象相连结,那么 Java 将 在后台对该对象调用 toString() 方法。意味着,下面这两个语句是相同的:
Log.v("NumbersActivity", "Current word: " + word);
或
Log.v("NumbersActivity", "Current word: " + word.toString());
- 接着,在 Android logcat 中,你将看到类似于下面的输出内容。 我用绿色字体颜色标出了日志标记 (NumbersActivity),并用紫色字体颜色 标出了 toString() 的返回值。
总结下,我们刚刚介绍了如何重写任何类中的 toString() 方法,这是可选内容。 但是,却是很有用的练习过程。因为在未来,你可能想要在日志中输出某个对象的当前状态(而不是在 Android Studio 中使用逐步调试器)。