为什么我不能创建内容解析器

时间:2012-01-05 11:40:23

标签: android android-contentresolver

我所做的就是创建一个新项目。     import android.app.Activity;     import android.content.ContentResolver;     import android.os.Bundle;     公共类WebApp4Act扩展Activity {     /** 在第一次创建活动时调用。 * /     public static final Uri BOOKMARKS_URI =         Uri.parse( “内容://浏览器/书签”);     Context context = getBaseContext();     ContentResolver cr = getContentResolver();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
}
}

当我运行该项目时,它说不幸的是webApp4c已停止

如果我注释掉这条线 ContentResolver cr = getContentResolver(); 那没有问题 我正试图在AVD上运行此版本以在版本14上运行

2 个答案:

答案 0 :(得分:3)

Context context = getBaseContext();
ContentResolver cr = getContentResolver();

需要在onCreate方法或onCreate方法

之后调用

答案 1 :(得分:1)

答案很简单。遗憾的是,getContentResolver()以及需要Context的任何其他方法在应用程序构建过程或初始化期间无法执行此操作。在某些版本的AVD上,这没有被正确复制,所以这就是为什么它适用于某些版本的AVD。您所要做的就是将代码移到onCreate()内(或者在构造之后运行的任何其他函数),你会没事的。

注意:有很多方法可以在构建过程中传递自定义视图或活动信息,但有两点需要注意:

  1. 如果您的应用程序中没有其他应用程序或应用程序组件提供给您的第一个组件,则无法执行此操作...
  2. 这会导致代码不安全。
  3. 在大多数情况下,最好在Android生命周期内工作。如果您需要有关Android生命周期的一些信息,可以从Android文档或Javadoc获取。

    附加说明(编辑):您实际上并不需要getBaseContext()。有几种ContextActivity计为一种。 getBaseContext()最适合用于需要在Android生命周期之外传递或保留Context的内容。

    希望这有帮助, FuzzicalLogic