Android 变量的值不会通过调试器显示

Android 变量的值不会通过调试器显示,android,debugging,Android,Debugging,我试图了解调试器是如何工作的,所以我创建了下面的示例,并在代码中下面提到的行处放置了一个断点。当我运行调试器时,我希望只看到变量“a”的值 在屏幕上,但实际上什么都没有显示 为什么变量“a”的值不使用文本视图“this.mTV2”显示在屏幕上 您已在恢复时停止设备。此时,实际上没有绘制任何内容,而是设置了文本值。此函数完成后,将重新绘制UI,您将看到更改。这是大多数UI开发代码所做的优化。当活动生命周期方法完成后,所有视图都将显示在屏幕上,即onCreate、onStart、onResume。当

我试图了解调试器是如何工作的,所以我创建了下面的示例,并在代码中下面提到的行处放置了一个断点。当我运行调试器时,我希望只看到变量“a”的值 在屏幕上,但实际上什么都没有显示

为什么变量“a”的值不使用文本视图“this.mTV2”显示在屏幕上


您已在恢复时停止设备。此时,实际上没有绘制任何内容,而是设置了文本值。此函数完成后,将重新绘制UI,您将看到更改。这是大多数UI开发代码所做的优化。

当活动生命周期方法完成后,所有视图都将显示在屏幕上,即onCreate、onStart、onResume。当您在onResume中调试时,设备将停止。onResume完成后,视图将被重新绘制(如果已经绘制),您将能够看到结果。

我尝试解释一下:

如果你看下图,它显示了android的生命周期。如您所见,活动在onCreate和onPause之后运行,这意味着即使在这些方法中放置了一些断点,您也不会在屏幕上看到任何内容,因为布局尚未更新

在调试器中,您可以看到变量的值,但不能看到屏幕上的值

没有调试屏幕文本的实用程序,因为调试器的实用程序是调试代码,而不是布局

如果仍要调试布局,唯一的方法是在操作上创建一个方法(例如单击按钮)并调试此方法

由于已经绘制了UI,您将看到文本更新,但正如我前面所说的,在查看布局更新时没有任何实用程序,关键是查看哪些值是您停在的行上的变量的值


希望帮助

可能与此无关,但只是为了尝试一下,您可以将代码全部放在onCreate中吗?您还可以提供活动的xml吗?所以您跳过了“a”,然后检查了值,结果什么也没有显示?或者null?不是绝对确定,但我认为OnResume方法运行时屏幕没有绘制,OnResume完成后屏幕是否仍不显示?@Cruces EDIT:我没有正确阅读,他说他在屏幕上看不到任何东西。我想到了调试器。问题是你指出的,没错!是的,但他的问题是当断点到达时,文本视图没有被填充,此时视图可能没有被绘制,这就是为什么我要问,在他继续执行并让onresume完成后,它是否仍然没有显示值。您应该在希望调试器停止执行并等待您逐步处理代码的位置放置一个断点,或者直接跳到下一个断点。断点不会结束代码的执行。生命周期方法完成后,您将能够看到结果。
@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);
}