0

文字通り、私が行ったことは、新しいプロジェクトを作成することだけです。android.app.Activity をインポートします。android.content.ContentResolver をインポートします。android.os.Bundle をインポートします。public class WebApp4Act extends Activity { /** アクティビティが最初に作成されたときに呼び出されます。*/ public static final Uri BOOKMARKS_URI = Uri.parse("content://browser/bookmarks"); コンテキスト context = getBaseContext(); ContentResolver cr = getContentResolver();

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

プロジェクトを実行すると、残念ながら webApp4c が停止したと表示されます

行 ContentResolver cr = getContentResolver(); をコメントアウトすると、バージョン14で実行するように設定されたAVDでこれを実行しようとしている問題はありません

4

2 に答える 2

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

onCreateメソッドの後またはメソッド内でonCreate呼び出す必要がある

于 2012-01-05T11:47:10.950 に答える
1

その答えは非常に簡単です。残念ながら、アプリケーションの構築プロセスまたは初期化中は、これを行うことができませんgetContentResolver()ContextAVD の一部のバージョンでは、これが適切に複製されなかったため、一部のバージョンの AVD では機能します。あなたがしなければならないのは、あなたのコードを内部onCreate()(または構築後に実行される他の関数)に移動することだけです。

注:構築中にカスタム ビューまたはアクティビティにこの情報を渡す方法はいくつかありますが、2 つの注意点があります。

  1. アプリケーションで起動された最初のコンポーネントに対して、別のアプリケーションまたはアプリケーションコンポーネントが提供されていない限り、これを行うことはできません...
  2. これは、安全でないコードにつながる可能性があります。

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

追記 (編集):実際には必要ありませんgetBaseContext()。にはいくつかの種類がContextあり、あなたActivityは1つとしてカウントされます。Android ライフサイクルの外側getBaseContext()を渡すまたは保持する必要がある場合に最適です。Context

これが役に立てば幸いです、FuzzicalLogic

于 2012-01-05T11:50:44.957 に答える