9

私のデバイスは、Android 5.1.1を実行し、私はトースト: "this"と "getApplicationContext()"の違いは?

Toast.makeText(this, "This is a toast", Toast.LENGTH_SHORT).show(); 

を使用している場合、私はこの得たことが分かった:

"round" toast

しかし、私は代わりにthisgetApplicationContext()を、使用している場合

Toast.makeText(getApplicationContext(), "This is a toast", Toast.LENGTH_SHORT).show(); 

私はこれを持っています:

rectangle toast

両方ともアクティビティから直接呼び出されます。

これはなぜですか?

答えて

13

これは、コンテキストが関連しているテーマと関係があります。 thisを使用している場合は、アプリケーションコンテキストとは異なるテーマを持つコンテキスト(私はActivityまたはFragmentと仮定しています)を使用しています。

アプリケーションコンテキストを使用する必要がある理由がある場合は、アクティビティが使用しているテーマ(通常はAndroidManifest.xmlに設定されています)にラップして、「丸い」トーストを表示する必要があります。

Toast.makeText(new ContextThemeWrapper(getApplicationContext(), R.style.AppTheme), "This is a toast", Toast.LENGTH_SHORT).show(); 
関連する問題