2016-07-23 16 views
0

なぜthisは以下の部分に誤りがありますか? "this"はフラグメントにエラーが発生しました

この

は私のコードです:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       this, android.R.layout.simple_spinner_item, spinnerArray); 
+1

がない場合のタイプの中のコード行 'Context'は、その後、あなたは'だけでどのような場合でも、内this' –

+2

を使用することができないためというクラスでなりエラー?より具体的にしてください。 – Lino

+0

アクティビティはContextオブジェクトです。断片はそうではありません。 –

答えて

0

this.getContext()thisを交換したり、単純にgetContext()

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), 
            android.R.layout.simple_spinner_item, spinnerArray); 

ビーイングがArrayAdapterオブジェクトのコンストラクタは次のように見えることである理由は、

https://developer.android.com/reference/android/widget/ArrayAdapter.html

ArrayAdapter(Context context, int resource, T[] objects) 

または

ArrayAdapter(Context context, int resource, List<T> objects) 

おそらく前に起こっていたコードの行をしていたことをクラスがないタイプContext最も可能性の高いだったということです。したがって、ArrayAdapterの構築では、パラメータとしてthisを単独で使用することはできません。 getContext()が機能しない場合は、getActivity()またはgetApplicationContext()もお勧めします。

-2

フラグメントにthisを使用する代わりに、getActivity().getApplicationContext()を試すことができます。

+0

フラグメントがネストされたクラスの場合のみ –

1

これを試してみてください:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
      getActivity(), android.R.layout.simple_spinner_item, spinnerArray); 
  • getContext()は、APIのみ23に添加して、いくつかのデバイス(AndroidのMは依然として巨大な市場シェアを持っていないので)でのみ動作するはずです。

  • getActivity()がAPI 11に追加されました。使用することはできません。

+1

'android.support.v4.app.Fragment'に' getContext() 'が存在するため、ここに問題はありません。 – Divers

+0

彼がサポートを使用していると仮定すると、必ずしもそうでない可能性があるフラグメント – W0rmH0le

+0

しかし、私はほとんど不可能だと思うし、現在の状況でサポートライブラリを使用しないことも悪い考えです – Divers

0

断片が関連付けられている活動のコンテキストを返す使用getActivity()

だからあなたのコードは

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, spinnerArray);`] 
関連する問題