Articles of android context

确定上下文是否为特定活动

我将Activity上下文传递给对话框,但该对话框对于其他活动是全局的,因此其他活动也可能创建该对话框。 我的问题是如何确定Activity上下文是一个特定的Activity? 我正在传递ActivityContext,如下所示: private Activity ActivityContext; public MessageDialog(Activity context,int DialogStyle,int Dialog_Layout,String Msg) { super(context,DialogStyle,Dialog_Layout); this.ActivityContext = context; this.Msg = Msg; }

在当前情况下无法访问

我有以下代码 public abstract class BaseAdapter extends ArrayAdapter { public BaseAdapter(Context context, int resource, Collection collection) { // typical constructor logic } // some other custom defined methods public static class ViewHolder { // custom defined logic } } public class ModelAdapter extends BaseAdapter { public ModelAdapter(Context context, int resource, Collection collection) { super(context, resource, collection); […]

AsyncTask和上下文

所以我正在使用Android和AsyncTask类来制作我的第一个multithreading应用程序。 我正在尝试使用它在第二个线程中触发Geocoder,然后使用onPostExecute更新UI,但我仍然遇到了正确的Context问题。 通过在主线程上使用Contexts,我有点蠢蠢欲动,但我不确定Context是什么或如何在后台线程上使用它,我还没有find任何好的例子。 有帮助吗? 以下是我要做的事情的摘录: public class GeoCode extends AsyncTask { @Override protected GeoThread doInBackground(GeoThread… i) { List addresses = null; Geocoder geoCode = null; geoCode = new Geocoder(null); //Expects at minimum Geocoder(Context context); addresses = geoCode.getFromLocation(GoldenHour.lat, GoldenHour.lng, 1); } } 由于上下文不正确,它在第六行仍然失败。

为什么AndroidTestCase.getContext()。getApplicationContext()返回null?

更新2012年2月13日:接受了答案,解释说这种行为是一个错误,并注意到它似乎已经在模拟器上消失得比v 1.6更好,这使得它对我们大多数人来说都不是问题。 解决方法只是循环/hibernate,直到getContext()。getApplicationContext()返回非null。 结束更新 根据android.app.Application javadoc,我定义了一个单例(称为Database),我的所有活动都访问状态和持久数据,而Database.getDatabase(Context)通过Context.getApplicationContext()获取应用程序上下文。 当活动将自己传递给getDatabase(Context)时,此设置的工作方式与广告一致,但是当我从AndroidTestCase运行unit testing时,getApplicationContext()调用通常会返回null,尽管测试时间越长,返回非null的次数越多值。 以下代码在AndroidTestCase中重现null – 演示不需要单例。 首先,要记录app-instantiation消息,在测试中的应用程序中我定义了MyApp并将其添加到清单中。 public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Log.i(“MYAPP”, “this=” + this); Log.i(“MYAPP”, “getAppCtx()=” + getApplicationContext()); } } 接下来,我定义了一个测试用例,用于报告AndroidTestCase.getContext()4次,由一些睡眠和一个getSharedPreferences()调用分开: public class DatabaseTest extends AndroidTestCase { public void test_exploreContext() { exploreContexts(“XPLORE1”); getContext().getSharedPreferences(“foo”, Context.MODE_PRIVATE); exploreContexts(“XPLORE2”); try { Thread.sleep(1000); } catch (InterruptedException […]

将Activity Context传递给内部使用的构造函数 – 这很糟糕

将Context传递给构造函数并将其保存为私有variables供内部使用是不好的做法吗? 另一种选择是将Context作为parameter passing给需要它的方法。 哪个更好? 我有一种感觉,传递给构造函数可能会意外地导致内存泄漏。

在没有上下文的情况下访问资源

我正在尝试将配置(例如URL / etc)放入资源文件夹中以供实用程序类使用。 但是,我不想从各地的活动中传递Context。 我希望能够通过路径名访问资源(似乎资产/是为此用途而设计的),而不使用上下文来访问资源。 在这种特殊情况下,我希望单例在实例化时在配置中使用某些东西。 在实例化期间,除了那次之外,它不需要任何资源。 因此,每次调用getInstance()时都必须传入一个Context,这将是一个完全的浪费。 此外,这特定于App的配置,不应存储在共享系统文件或类似的任何内容中。

如果上下文不是活动上下文而是应用程序上下文,如何启动Intent

我正在尝试从扩展BroadcastReceiver的类开始一个活动。 public void onReceive(Context context, Intent intent) { 问题是参数上下文是Application上下文而不是Activity上下文。 有没有办法使用Application上下文启动intent?

启动IntentService的空指针exception

我有一个我想要启动的IntentService。 当我这样做时,它会吐出这个: java.lang.RuntimeException: Unable to start service com.pec.testapp.service.NewsService@406bd940 with Intent { cmp=com.pec.testapp/.service.NewsService }: java.lang.NullPointerException at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2173) … (omitted for brevity) Caused by: java.lang.NullPointerException at android.app.IntentService.onStart(IntentService.java:110) at android.app.IntentService.onStartCommand(IntentService.java:118) at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2160) … 10 more 我已经搜索了这个,并查看了尽可能多的类似StackOverflow问题。 然而,有一些微妙的差异,我无法解决。 首先,exception中没有引用任何类。 其次,通过更改上下文或双重检查来确定类似的问题,以确保它不为空。 我有代码检查是不是这样: public Context context; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); context = getApplicationContext(); if(context == null) Log.d(“PECAPP”,”Context is null”); […]

Android DataBinding在哪里获取上下文?

我有TextView显示时间。 我想使用Android的DataBinding插件。 对于格式化时间,我使用DateUtils.formatDateTime(context,int,int)方法,该方法接受Context实例。 是否有可能获得上下文包含元素? 或者我必须使用旧学校的方式? 谢谢

Android JUnit4测试 – 从哪里获取上下文?

我必须构建一个使用sqlite的应用程序。 现在我想写unit testing。 这些unit testing应该测试我的SQLiteBridge类。 SQLiteBridge为每个子类Model提供DAO。 现在我遇到了一个问题,我需要一个上下文来创建我的SQLiteBridge 。 SQLiteBridge在系统上创建和处理SQLite数据库。 从哪里获取Context-Object? 我的设置就像在这里(所以我使用的是Junit4 [感谢上帝]): http : //tools.android.com/tech-docs/unit-testing-support 编辑:我希望有一种方式像旧的AndroidTestCase扩展而不会丢失Junit4。 🙂