java 文件中的其他方法是否可以在 Android Studio 的 onCreate 方法中调用?

Can other methods from a java file be called in the onCreate method in Android Studio?

我正在尝试调用稍后在我的 java 文件中定义的方法:

public int moveHorizontal;
public int moveVertical;
public RelativeLayout relative1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    relative1 = (RelativeLayout) findViewById(R.id.relative1);
    moveHorizontal = width(1f/12f);
    moveVertical = height(1f/12f);
}

...

public int width(float fraction) {
    float relativeWidth = relative1.getWidth();
    return Math.round(fraction*relativeWidth);
}

但是,当我 运行 我的应用处于调试模式时,我看到 moveHorizontalmoveVertical 都设置为 0。我知道该方法工作正常,因为我尝试在其余代码中使用它来查找 width(1f/12f) 和它 returns 90。这是否意味着我无法在 onCreate 方法内部调用 width 方法?有解决办法吗?

Does this mean that I can't call the width method inside the onCreate method?

您可以拨打width()。但是此时relative1.getWidth()会是0,因为布局还没有测量和布局。

And is there a way around this?

首先,看看是否有更好的解决方案来解决您要解决的任何问题,这涉及获取 relative1 的大小。例如,ConstraintLayoutLinearLayout 都支持基于分数调整大小,而无需您自己进行计算。

如果您确定需要宽度和高度,wait to try using it until the widgets have been sized