Search code examples
androidclassandroid-activityfindviewbyid

using findviewbyid in a class that does NOT extend Activity in android


I have a class that is currently extending Activity and I have methods like findViewById, ArrayAdapter etc. I want to turn it into an independent class but all the above methods become undefined. What is the problem? Shouldn't importing the classes be enough? For eg, I import android.view.View for findViewById but it still makes no difference. Please advise.


Solution

  • you should pass the instance of your Activity to your Second Class on the constructor like this :

    In your Activity Instanciate your Class like this :

    MyClass instance = new MyClass(this);
    

    And in your second Class , the constructor will be like this :

    public class MyClass {
    
    public Activity activity; 
    //.... other attributes 
    
    public MyClass( Activity _activity){
    
       this.activity = _activity;
    //other initializations...
    
    }
    }
    

    and then when you want to use the findViewById() method , you can do like this :

    EditText txt = (EditText)this.activity.findViewById(R.id.txt);