В моей основной деятельности есть следующий фрагмент
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(), ее значение равно нулю.
Как я могу получить доступ к кнопке?
Измените код на
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 btnx10twice. 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;
}