前言
本章将讲解如何处理应用的bug,同时也会介绍如何使用LogCat、Android Lint以及Android Studio内置的代码调试器。
一·异常与栈跟踪(QuizActivity.java)
public class QuizActivity extends AppCompatActivity {
...
private void updateQuestion() {
Log.d(TAG, "Updating question text ", new Exception());
int question = mQuestionBank[mCurrentIndex].getTextResId();
mQuestionTextView.setText(question);
}
public class QuizActivity extends AppCompatActivity {
...
private void updateQuestion() {
int question = mQuestionBank[mCurrentIndex].getTextResId();
mQuestionTextView.setText(question);
}
二。设置断点
1.取消代码注释(QuizActivity.java)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); ...
mNextButton = (Button)findViewById(R.id.next_button);
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
~~//~~ mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
updateQuestion();
}
}
);
...
}
三。使用Android Lint
Android Lint是Android应用代码的静态分析器(static analyzer)。作为一个特殊程序,它能在不运行代码的情况下检查代码错误。凭着对Android框架 的熟练掌握,Android Lint能深入检查代码,找出编译器无法发现的问题。在大多数情况下,Android Lint检查出的问题都值得重视。
不匹配的对象类型(QuizActivity.java) @
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate(Bundle) called");
setContentView(R.layout.activity_quiz);
...
mQuestionTextView = (TextView)findViewById(R.id.question_text_view);
~~mTrueButton = (Button)findViewById(R.id.true_button);~~
mTrueButton = (Button)findViewById(R.id.question_text_view);
... }
修正类型不匹配的代码错误(QuizActivity.java)
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate(Bundle) called");
setContentView(R.layout.activity_quiz);
mQuestionTextView = (TextView)findViewById(R.id.question_text_view);
~~mTrueButton = (Button)findViewById(R.id.question_text_view);~~
mTrueButton = (Button)findViewById(R.id.true_button); ... }