Переменная кнопки становится нулевой после вызова метода

В моей основной деятельности есть следующий фрагмент

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(), ее значение равно нулю.

Как я могу получить доступ к кнопке?

1
0
70
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Измените код на btnx10= findViewById(R.id.MainCOPbtn);

Вы используете Button в объявлении, что делает глобальную переменную недоступной.

Снова удалите локальное объявление Button.

Просто используйте btnx10=(Button)findViewById(R.id.MainCOPbtn); в onCreate()

Ответ принят как подходящий

Поскольку вы объявили кнопку в Объем метода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;
}

You are declaring Button btnx10 twice. Remove the local declaration. You should declare outside the method, and define inside the method.

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

Другие вопросы по теме