2013-02-05 8 views
23

私のクラスMainActivityにエラーがあります。Android getActivity()が定義されていません

エラー:あなたがあなたの活動を呼び出したい場合はThe method getActivity() is undefined for the type MainActivity

public class MainActivity extends SherlockFragmentActivity{ 
    PlaceSlidesFragmentAdapter mAdapter; 
    ViewPager mPager; 
    PageIndicator mIndicator; 

    public static final String TAG = "detailsFragment"; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.main, 
       container, false); 

     mAdapter = new PlaceSlidesFragmentAdapter(getActivity() 
       .getSupportFragmentManager()); 

     mPager = (ViewPager) view.findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 

     mIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator); 
     mIndicator.setViewPager(mPager); 
     ((CirclePageIndicator) mIndicator).setSnap(true); 

     mIndicator 
       .setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
        @Override 
        public void onPageSelected(int position) { 
         Toast.makeText(MainActivity.this.getActivity(), 
           "Changed to page " + position, 
           Toast.LENGTH_SHORT).show(); 
        } 

        @Override 
        public void onPageScrolled(int position, 
          float positionOffset, int positionOffsetPixels) { 
        } 

        @Override 
        public void onPageScrollStateChanged(int state) { 
        } 
       }); 
     return view; 
    } 
} 
+3

アクティビティクラスでコンテキストを取得するには、フラグメントのみでgetActivity()メソッドを使用する必要があります。 –

+0

ありがとう@GeorgyGobozov私が必要としていたものを正確に... – Jeff

答えて

33

これは、内部クラスの内部にgetActivity()を使用しているためです。使用してみてください:

SherlockFragmentActivity.this.getActivity()

代わりに、getActivity()一部の必要は本当にありませんけれども。あなたの場合、 SherlockFragmentActivity .thisで十分です。

+0

ありがとう、私の問題を解決しました。今私は別の問題があるが、別のトピックです。 – Newbie2013

+4

私はあなたの答えを使用しましたが、私は得ました: タイプSherlockFragmentActivityの囲むインスタンスはスコープ内でアクセス可能です それはasynctaskの中にあります。 –

+0

@ user1654206あなたは 'SherlockFragmentActivity'がクラスの名前であることを知っています。クラス名がわからない場合は、インポート宣言の下でファイルの先頭を確認してください –

25

は、ちょうどこのを使用しています。フラグメント内にあるときは、getActivityメソッドを使用します。

6

あなたのクラス内にgetActivity()が必要です。それはより良い使用する

yourclassname.this.getActivity() 

これを試してみてください。それはあなたにとって有益です。

関連する問題