12991

[code]

    @Override
    public void onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.activity_main, container, false);
    
        Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner1);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Spinner spinner = (Spinner) parent;
                String str = spinner.getSelectedItem().toString();
                Toast.makeText(getActivity(), str + "が選択されました", Toast.LENGTH_SHORT).SHOW();
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
    
            }
        });
        return rootView;
    }
    
[/code]

このようなサンプルソースがあったのでAndroid
studioで試したところ、Toast.makeTextの行の所の、getActivity()の部分でエラーが起きてしまいます。  
Cannot resolve method 'getActivity()'というエラーです。  
スピナーは設定してあるのですが、なぜエラーが起こるのか分かりません。  
このgetActivityは廃止されていたりするのでしょうか。  
お願いします。


CC BY-SA 3.0
2015-08-03T05:30:28.053
12975
2015-08-03T09:37:55.673
2015-08-03T06:40:12.177
9850
9850
question
android
AndroidのgetActivity()についての質問です


Cannot resolve method 'getActivity()' というエラーは、 そこが Fragment
を継承したクラスの内部でないために起こっていると考えられます。クラス宣言の箇所を確認してみてください。

[code]

    public class HogeFragment extends Fragment {
    
[/code]

Java には他のプログラミング言語における「関数」に相当するものがありません。 getActivity()
というのも、どこでも呼び出せる組み込み関数ではなく、 [Fragment
クラスで定義されているメソッド](http://developer.android.com/reference/android/app/Fragment.html#getActivity\(\))です。メソッドの呼び出しは
obj.method() のような形をとるのがまあ普通ですが、当該クラスないしその親クラスに属するメソッドは method()
と関数のように書いて呼び出します。


CC BY-SA 3.0
2015-08-03T09:37:55.673
12991
2015-08-03T09:37:55.673
7558
12975
answer