How to call method from another class without passing context?
Solution 1
Create a class that extends Application for your project (you have to declare it in the Manifest too), in the Application make a
private static MyApplication app
in the onCreate() of it assign it to the field
app = this;
and make a
public static MyApplication get()
in it. When you need a Context you can use a
MyApplication.get()
Solution 2
A few hints on Context:
Get Context in you View via
getContext()
and pass it togetContentResolver(context)
.Use application-context approach as described here by @apps.
Don't store context inside Activity or Views. This leads to memory leaks.
Josh
Updated on June 29, 2022Comments
-
Josh almost 2 years
I am currently trying to call a method from a utility class that will reference a new cursor created for this utility method. Unfortunately, my new class will not let me create the cursor without context. I have tried numerous ways of passing context from the calling activity, but get null pointer exceptions in most cases.
Here is the portion of my code:
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Tools.pickRandomItem(); } });
and in the Tools Class:
public static void pickRandomItem() { Cursor cur = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,MediaColumns.TITLE + " ASC"); }
Using the above code it throws an error on
getContentResolver()
, and all attempts I've made to pass context have failed.I am fairly new to programming for Android, and don't fully understand the concept of contexts. Any help you could provide would be greatly appreciated!
-
Josh over 13 yearsWorked great! Thanks for the help, it is truly appreciated!
-
Josh over 13 yearsThank you for the advice. Through your advice and more reading I have learned how critical context handling is to memory management.
-
Rakesh almost 12 yearsI guess getApplicationContext() is another way of doing the same.
-
Nitin Bansal over 11 yearsuse getApplicationContext()