1

私はフォーラムとAndroid開発に不慣れです。

デバイスの向きのデータを取得しようとしていますが、何か問題があるようです。私はこのリンクのチュートリアルをフォローしています:http://www.mail-archive.com/android-beginners@googlegroups.com/msg23415.html

ただし、ライン

sensorManager =  (SensorManager) getSystemService(SENSOR_SERVICE);

SENSOR_SERVICEが有効な変数ではないというエラーが表示されるので、これがContextクラスのパブリック静的変数であることがわかったので、

sensorManager =  (SensorManager) getSystemService(Context.SENSOR_SERVICE);

これにより、getSystemService(String)が現在のクラスのメソッドではないというエラーが発生します。getSystemService(String)がContextのメソッドであることを理解したので、私の質問は

(SensorManager)1)メソッド呼び出しの前で-キャストだと思います-何をしていますか?

2)現在のコンテキストを取得し、そのコンテキストでメソッドを実行する必要がありますか?もしそうなら、どのように?

私はこれを考えすぎていると確信していますが、どんな助けと忍耐も大歓迎です。

4

2 に答える 2

0

はい、getSystemService()はContextのメソッドです。Contextを取得するには、次のいずれかを使用します。

getApplicationContext();

または、現在のアクティビティまたはサービス、オブジェクトを使用して、次の方法でコンテキストを取得します。

ThisService.this.getSystemService();

また

ThisActivity.this.getSystemService();
于 2012-02-07T05:54:47.333 に答える
0

1)メソッド呼び出しの前で-(SensorManager)は何をしているのですか?

それは確かにキャストです。getSystemService未分化型を返すように宣言されているので必要ですObject(明らかにもっと具体的なものを返しますが)。

2)現在のコンテキストを取得し、そのコンテキストでメソッドを実行する必要がありますか?もしそうなら、どのように?

カスタムViewクラスでは、を使用できますgetContext()。このコードが別の種類のカスタムクラスの一部である場合は、コンストラクターでコンテキストを渡すことができます。getApplicationContext()コンテキストをメンバーフィールドとして保存するときに使用することをお勧めしActivityます。これは、アクティビティがデバイスの向きの変更などによって停止した場合に、コンテキストをガベージコレクションできるようにするためです。

于 2012-02-07T05:55:34.203 に答える