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

Android Studio中的onCreate方法可以调用java文件中的其他方法吗?,java,android,variables,methods,oncreate,Java,Android,Variables,Methods,Oncreate,我试图调用稍后在java文件中定义的方法: public int moveHorizontal; public int moveVertical; public RelativeLayout relative1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ma

我试图调用稍后在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);
}

然而,当我在调试模式下运行我的应用程序时,我看到
moveHorizontal
moveVertical
都设置为
0
。我知道该方法工作得很好,因为我在代码的其余部分尝试使用它来查找
宽度(1f/12f)
,它返回
90
。这是否意味着我不能在
onCreate
方法中调用
width
方法?有办法解决这个问题吗

这是否意味着我不能在onCreate方法中调用width方法

您可以调用
width()
。但是,
relative1.getWidth()
此时将为0,因为布局尚未测量和布局

有办法解决这个问题吗

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


如果您确定需要宽度和高度,.

是否尝试过调试?在我看来,
relative1.getWidth()
更有可能返回一个意外值(可能它还没有绘制?)
public int width(float fraction) {
    float relativeWidth = relative1.getWidth();
    return Math.round(fraction*relativeWidth);
}