调用方法后,按钮变量变为空

时间:2018-08-04 17:41:40

标签: android android-resources

在我的主要活动中,我有以下片段

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。

如何访问按钮?

4 个答案:

答案 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;
}