Button variable turns to null after calling method

前端 未结 4 953
不知归路
不知归路 2021-01-29 11:34

In my mainactivity I have the following snip

MainActivity.class

private Button btnx10;

@Override
protected void onCreate(Bundle savedInstanceState) {
         


        
相关标签:
4条回答
  • 2021-01-29 11:35

    Change the code to btnx10= findViewById(R.id.MainCOPbtn);

    You are casting Button in the declaration which makes global variable inaccessible.

    0 讨论(0)
  • 2021-01-29 11:43

    Since you have declared the Button in Scope of Method onCreate()

    Button btnx10=(Button)findViewById(R.id.MainCOPbtn);
    

    and you are trying to access it outside of the method onCreate(), that makes it inaccessible outside of this method.

    Just make the reference on class level (Globally) and use the same Reference in onCreate() method.

    you can do this:-

    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;
    }
    
    0 讨论(0)
  • 2021-01-29 11:45

    Remove local declaration of Button again.

    Just use btnx10=(Button)findViewById(R.id.MainCOPbtn); in onCreate()

    0 讨论(0)
  • 2021-01-29 11:46

    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;
    }
    
    0 讨论(0)
提交回复
热议问题