我正在尝试学习调试器是如何工作的,所以我创建了下面的示例,并在代码中的下面提到的行中放置了一个断点。当我运行调试器时,我希望只看到varibale“a”的值 在屏幕上,但实际发生的事情是什么都没有显示
为什么使用TextView“this.mTV2”在屏幕上不显示变量“a”的值?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.mTV1 = (TextView) findViewById(R.id.tv1);
this.mTV2 = (TextView) findViewById(R.id.tv2);
this.mTV3 = (TextView) findViewById(R.id.tv3);
}
@Override
protected void onResume() {
super.onResume();
int a, b, c;
int x = 30;
int y = 40;
int z = 50;
a = x + y;
b = y + z;
c = x + z;
this.mTV1.setText("" + a);
this.mTV2.setText("" + b);//BREAKING POINT HERE
this.mTV3.setText("" + c);
}
答案 0 :(得分:1)
您在onResume
期间停止了该设备。此时实际上并未绘制任何内容,而是您已设置文本值。完成此功能后,将重新绘制UI,您将看到更改。这是大多数UI开发代码所做的优化。
答案 1 :(得分:1)
我试着解释一下:
如果你看一下下面的图片,它会显示android生命周期。如您所见,活动在onCreate和onPause之后运行,这意味着即使您在这些方法中放置了一些断点,您也不会在屏幕上看到任何内容,因为布局尚未更新。
在调试器中,您可以看到变量的值,但不能看到屏幕上的值。
调试屏幕文本没有实用程序,因为调试器的实用程序是调试代码,而不是布局。
如果您仍想调试布局,唯一的方法是在操作上创建方法(例如单击按钮)并调试此方法。
由于UI已经被绘制,你会看到文本更新,但正如我之前所说,看到布局更新没有任何实用工具,关键是看到哪些值是你要停在的行的变量
希望有所帮助
答案 2 :(得分:0)
当活动生命周期方法完成时,所有视图都将在screene上可见,即onCreate,onStart然后onResume。当您在onResume内部进行调试时,您的设备已停止。在onResume完成后,如果已经绘制了视图,则会重新绘制视图,并且您将能够看到结果。