Questions tagged «android-context»

界面到有关应用程序环境的全局信息



7
Android布局文件中的“ tools:context”是什么?
从最新的ADT新版本开始,我在布局XML文件中注意到了这个新属性,例如: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".MainActivity" /> “ tools:context”是做什么用的? 它甚至怎么知道写在这里的活动的确切路径?它会查看清单中的应用程序包吗? 是否仅限于扩展Context的类或仅扩展活动?它可用于ListView项目等吗?

27
使用getApplication()作为上下文的对话框抛出“无法添加窗口-令牌null不适用于应用程序”
我的活动试图创建一个AlertContext,它需要一个Context作为参数。如果我使用,这可以按预期工作: AlertDialog.Builder builder = new AlertDialog.Builder(this); 但是,我很乐意使用“ this”作为上下文,因为即使在诸如屏幕旋转之类的简单操作中销毁并重新创建Activity时,也可能会发生内存泄漏。摘自Android开发者博客上的相关文章: 有两种简单的方法可以避免上下文相关的内存泄漏。最明显的是避免将上下文转义超出其自身范围。上面的示例显示了静态引用的情况,但是内部类及其对外部类的隐式引用可能同样危险。第二种解决方案是使用Application上下文。只要您的应用程序处于活动状态且不依赖于活动生命周期,此上下文将一直存在。如果计划保留需要上下文的长期对象,请记住该应用程序对象。您可以通过调用Context.getApplicationContext()或Activity.getApplication()轻松获得它。 但是对于AlertDialog()都不是getApplicationContext()或getApplication()不能作为上下文接受的情况,因为它引发了异常: “无法添加窗口-令牌null不适用于应用程序” 每引用:1,2,3,等等。 那么,这是真的应该被视为“错误” Activity.getApplication()吗,因为我们被正式建议使用,但它不能像宣传的那样起作用? 吉姆

30
在片段中使用上下文
如何获取片段中的上下文? 我需要用我的数据库其构造函数采用的背景下,但getApplicationContext()并FragmentClass.this没有工作,所以我能做些什么? 数据库构造函数 public Database(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); }


9
在各处使用应用程序上下文?
在Android应用中,以下方法有什么问题: public class MyApp extends android.app.Application { private static MyApp instance; public MyApp() { instance = this; } public static Context getContext() { return instance; } } 并将其传递到需要上下文的任何地方(例如SQLiteOpenHelper)(并且当然不会泄漏)?

4
getApplication()与getApplicationContext()
我找不到满意的答案,所以我们开始:Activity/Service.getApplication()和有Context.getApplicationContext()什么关系? 在我们的应用程序中,两个都返回相同的对象。在ActivityTestCase然而,嘲讽的应用程序将getApplication()回来与模拟,但getApplicationContext仍然会返回一个不同的上下文实例(一个由Android注入)。那是个错误吗?是故意的吗? 首先,我什至不了解其中的区别。在测试套件之外是否有案例,两个调用可能返回不同的对象?什么时候,为什么?而且,为什么getApplication在Activity和Service上定义了,但没有定义Context?难道不应该在任何地方都可以使用有效的应用程序实例吗?

8
获取上下文的各种方法之间有什么区别?
在各种Android代码中,我已经看到: public class MyActivity extends Activity { public void method() { mContext = this; // since Activity extends Context mContext = getApplicationContext(); mContext = getBaseContext(); } } 但是,我找不到哪种比较合适的解释,在哪种情况下应该使用哪种解释。 我们将不胜感激有关此文档的指针以及有关如果选择了错误的内容可能会破坏的指南。

24
从Activity上下文外部调用startActivity()
我ListView在Android应用程序中实现了。我ListView使用类的自定义子类将此绑定ArrayAdapter。在覆盖的ArrayAdapter.getView(...)方法中,我分配了一个OnClickListener。在的onClick方法中OnClickListener,我要启动一个新活动。我得到了例外: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 我怎样才能获得Context的ListView(目前的Activity)工作下?

12
如何从任何地方获取软件包名称?
我知道Context.getApplicationContext()和View.getContext()的可用性,通过它们我可以实际调用Context.getPackageName()来检索应用程序的程序包名称。 如果我从一个可用a View或一个Activity对象可用的方法中调用它们,它们会起作用,但是如果我想从一个完全独立的类中使用no View或查找包名称Activity,是否有办法(直接或间接)呢?

7
何时调用活动上下文或应用程序上下文?
关于这两个上下文的内容有很多报道。.但是我仍然不太正确。 到目前为止,据我了解:每个类都是其类的一个实例,这意味着某些程序员建议您this.getApplicationContext()尽可能频繁地使用它,以免“泄漏”出任何内存。这是因为另一个this(获取Activity实例上下文)指向的Activity是每次用户倾斜手机或离开应用程序等时都将销毁的一个。显然,垃圾收集器(GC)无法捕获,因此使用了过多的内存.. 但是任何人都可以拿出一些非常好的编码示例,使用它们将是正确的事情this(获取当前Activity实例的上下文),而应用程序上下文将是无用/错误的?

13
上下文或活动之外的getString
我发现R.string将硬编码的字符串保留在我的代码之外真是太棒了,我想继续在实用程序类中使用它,该实用程序类与我的应用程序中的模型一起使用以生成输出。例如,在这种情况下,我从活动之外的模型生成电子邮件。 是否可以getString在Context或外使用Activity?我想我可以通过当前活动,但这似乎没有必要。如果我错了,请纠正我! 编辑:我们可以不使用访问资源Context吗?

7
活动上下文和应用程序上下文之间的区别
这让我感到困惑,我在Android 2.1-r8 SDK中使用了它: ProgressDialog.show(getApplicationContext(), ....); 并且在 Toast t = Toast.makeText(getApplicationContext(),....); 使用都getApplicationContext()崩溃ProgressDialog和Toast..这导致我这个问题: 尽管使用了“上下文”一词,但活动上下文和应用程序上下文之间的实际区别是什么?

14
getActivity()在Fragment函数中返回null
我有一个带有这样的公共方法的片段(F1) public void asd() { if (getActivity() == null) { Log.d("yes","it is null"); } } 是的,当我从“活动”中调用它时,它为null ... FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction(); F1 f1 = new F1(); transaction1.replace(R.id.upperPart, f1); transaction1.commit(); f1.asd(); 一定是我做错了什么,但我不知道那是什么

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.