using findviewbyid in a class that does NOT extend Activity in android
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);
if you want to call any function that belongs to Activity
then only thing you need to have is context of the Activity
.
eg.
class A extends Activity { Context ctx; void onCreate(Bundle b) ctx = this; B bob = new B(ctx); }}
Here is class B.
class B { B (Activity a) { a.anyFunctionOfActivity(); }}
findViewById is non-static public method of the Activity
Class ,so it only be available for a Activity
object. Therefore, import android.view.View
and android.app.Activity
won't make it available. To make it available, you could pass around a Actvity
object - usually a this
point in your activity. However, notice that you should always update your View in the UI thread.