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);
}
但是,当我 运行 我的应用处于调试模式时,我看到 moveHorizontal
和 moveVertical
都设置为 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
的大小。例如,ConstraintLayout
和 LinearLayout
都支持基于分数调整大小,而无需您自己进行计算。
如果您确定需要宽度和高度,wait to try using it until the widgets have been sized。
我正在尝试调用稍后在我的 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);
}
但是,当我 运行 我的应用处于调试模式时,我看到 moveHorizontal
和 moveVertical
都设置为 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
的大小。例如,ConstraintLayout
和 LinearLayout
都支持基于分数调整大小,而无需您自己进行计算。
如果您确定需要宽度和高度,wait to try using it until the widgets have been sized。