Я создаю приложение, в котором мне нужно загрузить изображения для всех компонентов, таких как кнопки, логотип .. с сервера. Я использую три класса MemoryCache, и файловый кэш ImageLoder класс от fedors Lazylist пример https://github.com/thest1/LazyList/tree/master/src/com/fedorvlasov/lazylist , где мы можем передать URL и Вид на ImageLoader и нагрузки, кэш изображения и т.д.Класс подкласса приложения возвращает исключение нулевого указателя
поэтому я хочу, чтобы инициализировать класс ImageLoder только один раз в все приложение и повторно использовали его в других действиях, чтобы сделать это, я создал для него объект в моем MyGlobalClass, в котором реализовано приложение вроде этого.
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;
}
}
Я создал <appplication>
поле в AndroidManifest.xml в
<application
android:name="com.xx.yy.MyGlobalClass"
android:allowBackup="true"
android:icon="@drawable/ic_launcher">
</application>
Но когда я использую его в других видах деятельности, как создание объекта мирового класса, я делаю это:
MyGlobalClass myGClass = (MyGlobalClass)getApplicationContext(); // null pointer here
Он возвращает исключение с помощью нулевого указателя.
Я хочу, чтобы получить доступ к ImageLoader
в HomeActivity
так:
ImageButton homeBt = (ImageButton) findViewById(R.id.imageButton2);
ImageLoader imgLoader=(ImageLoader)myGClass.getImageLoader();
String[] urls=myGClass.getUrls();
imgLoader.DisplayImage(urls[1], cameraBt);
Может кто-нибудь увидеть, что случилось с моим кодом и подсказать, как это сделать? Я также создал одноэлементное поле, но не знаю, почему и как его использовать. Просьба привести несколько примеров. Я фактически добавляю вышеприведенную строку исключения в класс активности до onCreate(), поэтому может возникнуть проблема ... но когда я добавляю ее в onCreate() в HomeActivity, она дает мне класс cast Exception..cannot cast to android .app.Application to com.xx.yy.MyGlobalClass