我正在创建一个应用程序,我需要从服务器加载所有组件的图像,如按钮,徽标..我使用了三个类MemoryCache,FileCache和ImageLoder类来自fedors Lazylist的例子 https://github.com/thest1/LazyList/tree/master/src/com/fedorvlasov/lazylist 我们可以将url和View传递给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;
}
}
我在 AndroidManifest.xml 中创建了<appplication>
字段为
<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()之前在activity类中添加了上面的异常行,所以可能是问题..但是当我在HomeActivity中的onCreate()中添加它时,它会给我类强制转换异常...无法强制转换为android。 app.Application to com.xx.yy.MyGlobalClass
答案 0 :(得分:1)
实际上iam在AndroidManifest.xml文件中不知不觉地创建了另一个“应用程序”标签,事实是--android:name =“com.xx.yy.MyGlobalClass” - 应该添加到同一个“应用程序”标签中之前创建,如果有的话 在关于ClassCastException问题的答案中,每个人都提到我们需要在ManifestFile中添加带有“android:name”属性的标签..但是没有指明它在哪里..,我必须学习它几乎一半的时间浪费, 希望对别人有所帮助。谢谢syed