在我的主要活动中,我有以下片段
MainActivity.class
private Button btnx10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button btnx10=(Button)findViewById(R.id.MainCOPbtn);
DrawLines();
}
private void drawLines(){
float centerYOnImage1=btnx10.getHeight()/2;
}
我正在尝试从方法onCreate()
访问在drawLines()
方法中创建的按钮
即在同一类MainActivity.class
中,但在此方法之外。
当我尝试访问drawlines()
方法中的按钮时,其值为null。
如何访问按钮?
答案 0 :(得分:1)
自从您在方法范围 onCreate()
Button btnx10=(Button)findViewById(R.id.MainCOPbtn);
,并且您尝试在方法onCreate()
之外访问它,这使其在该方法之外不可访问。
只需在类级别(全局)上进行引用,并在onCreate()
方法中使用相同的引用即可。
您可以执行以下操作:-
private Button btnx10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
btnx10 = (Button)findViewById(R.id.MainCOPbtn);
DrawLines();
}
private void drawLines(){
float centerYOnImage1 = btnx10.getHeight()/2;
}
答案 1 :(得分:0)
将代码更改为
btnx10= findViewById(R.id.MainCOPbtn);
您要在声明中强制转换Button
,这将导致无法访问全局变量。
答案 2 :(得分:0)
再次删除Button
的本地声明。
只需在btnx10=(Button)findViewById(R.id.MainCOPbtn);
中使用onCreate()
答案 3 :(得分:0)
您两次声明
Button btnx10
。删除本地声明。 您应该在方法外部声明,然后在方法内部定义。
Class MainActivity...
private Button btnx10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
btnx10=(Button)findViewById(R.id.MainCOPbtn); //MINOR CORRECTION IN THIS LINE
DrawLines()
}
private void drawLines() {
float centerYOnImage1=btnx10.getHeight()/2;
}