Android Studio中的onCreate方法可以调用java文件中的其他方法吗?
我试图调用稍后在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
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);
}