2012-01-05 12 views
0

言い換えれば、私が行ったのは新しいプロジェクトを作成することだけです。 import android.app.Activity; import android.content.ContentResolver; import android.os.Bundle; public class WebApp4Act extends Activity { /**アクティビティが最初に作成されたときに呼び出されます。 */ public static final Uri BOOKMARKS_URI = Uri.parse( "content:// browser/bookmarks"); コンテキストコンテキスト= getBaseContext(); ContentResolver cr = getContentResolver();コンテンツレゾルバを作成できないのはなぜですか

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

私はそれが私が ContentResolverのCR = getContentResolver()の行をコメントアウトした場合、残念ながらwebApp4cは

を停止したと言うプロジェクトを実行します。 はその後、私はバージョン14

+0

は、私はちょうどsdk4を使用してAVDで再びそれを試してみました3 – Martin

+0

に、プロジェクトのSDKを設定していると言うのを忘れていました。まだ動作していません – Martin

答えて

1

に呼び出す必要があります。残念なことに、getContentResolver()と、Contextを必要とするその他の方法では、アプリケーション構築プロセスまたは初期化中には実行できません。 AVDのいくつかのバージョンでは、これは適切に複製されていないため、AVDの一部のバージョンで動作します。あなたのコードをonCreate()(または、AFTER構築後に実行される他の関数)の中に移動するだけで済みますし、うまくいくでしょう。

注:カスタムビューまたはアクティビティ工事中にこの情報を渡す方法がありますが、二つの注意点があります。

  1. あなたが別のアプリケーションなしで、あなたのアプリケーションで最初に起動コンポーネントのためにそうすることはできませんがあなたにそれを与えるアプリケーションコンポーネント...
  2. これは安全でないコードにつながります。

ほとんどの場合、Androidライフサイクル内で作業するのが最善です。 Androidライフサイクルに関する情報が必要な場合は、AndroidのドキュメントまたはJavadocから入手できます。

追加ノート(編集):実際にはgetBaseContext()は必要ありません。 Contextにはいくつかの種類があり、Activity数は1つです。 getBaseContext()は、Androidライフサイクル外にContextを渡すか保持する必要がある場合に最適です。このことができます

希望、 FuzzicalLogic

+0

@idiottigerとFuzzical Logicは両方ともこれを修正しました。ありがとうございました – Martin

+0

とにかく 'getBaseContext()'を使わないのが最善でしょう! – slinden77

+0

実際はそうではありません。実際には、getApplicationContext()を持たないオブジェクトの生涯外のコンテキストが必要なときはいつでも、Googleはそれを使用することをお勧めします。多くの場合、getBaseContext()はApplicationContextを提供します。しかし、これほど控えめにして、それに応じてプログラムを行うべきであるということに合意しています。 –

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

上で実行するように設定AVD上でこれを実行しようとしている何の問題 はありません答えは非常に簡単であることをonCreate方法後またはonCreate方法

関連する問題