Dmi*_*try 35 java singleton android android-context baseadapter
在我的android项目中,我有ImageAdapter类,我在其中传递应用程序上下文以满足其他需求.
public class ImageAdapter extends BaseAdapter {
private Context c;
public ImageAdapter(Context c) {
this.c = c;
}
...
}
Run Code Online (Sandbox Code Playgroud)
问题是我想让ImageAdapter成为一个单例,以便从我的所有活动中轻松访问这个类的实例.但是我不知道如何将getApplicationContext()方法中的app context从我的一个活动传递给ImageAdapter.所以有没有"神奇"做到这一点如下?
public class ImageAdapter extends BaseAdapter {
private Context c;
private static class Holder {
public static final ImageAdapter IA = new ImageAdapter();
}
private ImageAdapter() {
this.c = /* some magic here */.getApplicationContext();
}
public static ImageAdapter getInstance() {
return Holder.IA;
}
...
}
Run Code Online (Sandbox Code Playgroud)
也许你有一些其他的想法,可以为我的任何活动分享ImageAdapter.我是android的新手,我对在活动中传递数据的方式有点困惑.
我将不胜感激任何帮助.
moh*_*omn 85
更新:06年3月6日
使用MyApplication实例而不是Context实例.Applicationinstance是一个单例上下文实例本身.
public class MyApplication extends Application {
private static MyApplication mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = this;
}
public static MyApplication getContext() {
return mContext;
}
}
Run Code Online (Sandbox Code Playgroud)
上一个答案
您可以像这样获取应用程序上下文:
public class MyApplication extends Application {
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
}
public static Context getContext() {
return mContext;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以从该方法调用应用程序上下文 MyApplication.getContext()
不要忘记在清单文件中声明应用程序:
<application
android:name=".MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48937 次 |
| 最近记录: |