2013-02-22 10 views
6

私の初心者の質問に申し訳ありません、私はちょうどGoogleとstackoverflowから答えを見つけることができません..私はアンドロイドの知識のための良い基盤を構築することができます、アンドロイドの学習を開始します。フラグメントの中にtoast.maketextを作成すると、次のコードでどのコードを使うべきか疑問に思っています。 getActivity()またはgetAcitivity()。getApplicationContext()?フラグメント内のトーストは、getActivity()またはgetAcitivity()。getApplicationContext()を使用する必要があります。

私は、ユーザーインターフェイス関連の呼び出しのために

btn1.setOnClickListener(new View.OnClickListener() {    
@Override 
public void onClick(View v) { 
Toast.makeText(getActivity(), "hello",Toast.LENGTH_LONG).show(); 
Toast.makeText(getActivity().getApplicationContext(),"Hello",Toast.LENGTH_LONG).show(); 
} 
}); 
+0

はレトマイヤーによって、この説明を参照してください。 –

答えて

10

はActivityコンテキストを使用し、それがうまく機能..両方を試してみました。私は、UIのものを使用すると、一般的にアクティビティーコンテキストを使用するであろうと信じて https://stackoverflow.com/a/987503/534471

+0

なので、メモリリークを避けるためにgetAcitivity()。getApplicationContext()の代わりにgetActivity()を使用してください。私は正しい?私を訂正してください〜 – NaiveBz

+2

No. 経験則として、アクティビティの範囲内にあるときはいつでもアクティビティコンテキストを使用してください。アクティビティの範囲を離れるときは、アプリケーションコンテキストを使用します。 私はこの答えが混乱するかもしれないが、質問には明確な答えがなく、状況に大きく依存することを知っています。場合によっては、アクティビティコンテキストを使用する必要があります。そうでない場合は例外が発生します。その他の場合は、アクティビティコンテキストが漏れないように、アプリケーションコンテキストを使用する必要があります。 あなたのコードがアクティビティ内にあると仮定していますか? はいの場合は、アクティビティコンテキストを使用します。そうでない場合は、さらにコードを投稿してください。 –

+0

お返事ありがとうございました。 erm、どのように考えるのはアクティビティの範囲内にあるのか、アクティビティの範囲を離れるのか?フラグメントClass onCreateView関数の内部にトーストが作成されます。それは活動範囲外のものなのでしょうか? – NaiveBz

関連する問題