I am creating an application where i need to load the images for all the components like buttons, logo.. from the server. I am using three classes MemoryCache,FileCache and ImageLoder class from fedors Lazylist example https://github.com/thest1/LazyList/tree/master/src/com/fedorvlasov/lazylist where we can pass url and View to ImageLoader and load,cache the image etc.
so i want to initialize the ImageLoder class only once in the entire app and reused it in other Activities in order to do that i created a object for it in my MyGlobalClass extented with Application like this.
public class MyGlobalClass extends Application {
private static Context context;
private static MyGlobalClass singleton;
private static ImageLoader imageLoder = new ImageLoader(getAppContext());
private static String[] urls;
public MyGlobalClass getInstance() {
return singleton;
}
public void onCreate() {
super.onCreate();
singleton = this;
MyGlobalClass .context = getApplicationContext();
urls = getResources().getStringArray(R.array.urls);
}
public static Context getAppContext() {
return MyGlobalClass .context;
}
public ImageLoader getImageLoader() {
return imageLoder;
}
public String[] getUrls() {
return urls;
}
}
I created <appplication>
field in AndroidManifest.xml as
<application
android:name="com.xx.yy.MyGlobalClass"
android:allowBackup="true"
android:icon="@drawable/ic_launcher">
</application>
But when I am using it in other activities like creating object of global class I am doing this:
MyGlobalClass myGClass = (MyGlobalClass)getApplicationContext(); // null pointer here
It's returning a null pointer exception.
I want to access ImageLoader
in HomeActivity
like this:
ImageButton homeBt = (ImageButton) findViewById(R.id.imageButton2);
ImageLoader imgLoader=(ImageLoader)myGClass.getImageLoader();
String[] urls=myGClass.getUrls();
imgLoader.DisplayImage(urls[1], cameraBt);
Can anybody see what is wrong with my code and suggest how to do it? I also created a singleton field but don't know why, and how to use it. Please provide some examples. I am actually adding the above exception line in activity class before onCreate(), so may be that is the problem..but when i am adding it in onCreate() in HomeActivity it gives me Class cast Exception..cannot cast to android.app.Application to com.xx.yy.MyGlobalClass