I have a Button. Its View.OnClickHandler-implementing class is instantiated about 3 constructors deep from the nearest reference to an android.app.Activity object. When clicked, I want it to open the Location settings panel so the user can enable GPS and/or network-based location by launching the
I believe you are saying that you need an
Activity object for the first parameter of
new Intent or some other method to generate intents. Please do correct me if I'm wrong. If that is the case you actually just need a
Context object (
Activity is a sub-class of
Context), that may not help particularly in this case.
I'd need to see the code to be sure there wasn't a way to get at a context object neatly from the spot you need it. There may be some way to do it (e.g. access to outer variable from anonymous object scope; a fairly common pattern with handlers on Android).
I would say that in some of my apps I do pass context objects around quite a bit. Personally I think this practice (known as dependency injection) is not so bad as some engineers think. If you are using managers or state-laden objects deep in the app, concealing this fact with global accessors or automatic dependency injection, is just papering over that fact.
Here are two other similar questions on this topic with respect to Android context objects: